Почему этот переключатель не возвращает значение?
Учитывая следующее:
ЗАПИСКА: Я указал Решение ниже, потому что оно исправило проблему в этом издевательском коде ниже, но для тех из вас, кто смотрит на это в будущем, мои свойства только для чтения являются допустимыми C#, введенными в C# 6.0.
using System;
public class RBOleDb
{
public string DbType { get; }
public string DbDataSource { get; }
public string DbPath { get; }
public string DbProvider { get; }
/// <summary>
/// Use this for connections to files, such as MS ACCESS, EXCEL, etc.
/// </summary>
/// <param name="file_path">Path to Database</param>
public RBOleDb ( string file_path )
{
DbType = System.IO.Path.GetExtension ( file_path ).Replace ( "." , "" ).ToUpper ( );
DbPath = file_path;
DbDataSource = file_path;
}
public string GetProvider ( )
{
string result = "";
switch ( DbType )
{
case "MDF":
result = "SQLNCLI11";
break;
case "MDB": // return "Microsoft.Jet.OLEDB.4.0";
case "ACCDB":
case "XLSX":
case "XLS":
case "DBF":
result = "Microsoft.ACE.OLEDB.12.0";
break;
default:
result = "!!UNABLE TO DETERMINE PROVIDER!!";
throw new ArgumentException ( $"DbType has a value of {DbType}, which is not valid. RBDataOleDb clould not determine what database provider to use when connecting to database" );
}
return result;
}
}
Почему GetProvider() не возвращает значение из оператора switch? Поскольку расширение входного файла-MDB, я ожидаю получить "Microsoft.ACE.OLEDB.12.0" обратно из этого метода.
Что я уже пробовал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ricks_Class_Testing
{
class Program
{
static void Main ( string[ ] args )
{
string mdb = $@"D:\FIRECOMM\Ricks Dallas D Drive\db\COUNTY DATA\statecounty00.MDB";
RBDataOleDb db = new RBDataOleDb ( mdb );
Console.WriteLine ( db.DbType );
Console.WriteLine ( db.DbPath );
Console.WriteLine ( db.DbProvider );
}
}
}