我们有一个拥有一些员工信息的数据库,我只是写了一个小类来访问这些信息。该类包含一个应用程序配置文件,该文件具有到数据库的连接字符串。此项目中只有3个文件。
两个.cs
个文件和一个App.config
个文件。
app.config文件包含:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connString" value="server=myserver;uid=mysa;pwd=mypwd;database=mydb"/>
</appSettings>
</configuration>
我的一个CS文件我有这样的课程:
namespace Employees.DAL
{
public static class DAL
{
private static readonly string connString = System.Configuration.ConfigurationManager.AppSettings["connString"].ToString();
public static Employee GetEmployeeByID(long EmpID)
{
Employee e = null;
using (SqlConnection con = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand("EMPDLL_selEmployeeByID", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@LoginID", SqlDbType.BigInt).Value = EmpID;
con.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
if (reader.Read())
{ //todo: implement Employee class
e = new Employee((long)reader["LoginID"]
);
}
}
}
}
}
return e;
}
}
}
相当简单,只需从数据库中获取一条记录,然后让一名员工离开Employee.cs类中的员工:
namespace Employees.Objects
{
public class Employee
{
/// <summary>
/// ID of employee.
/// </summary>
public long LoginID { get; private set; }
public Employee( long LoginID)
{
this.LoginID = LoginID;
}
}
}
现在我所做的是在vs2010中创建一个新的控制台项目,并添加对我构建的.dll文件的引用,即Employees。我需要这样做,因为我必须将其写为可重用的类,以便其他人可以包含它。
那么我只是做了一些简单的控制台应用程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Employees.DAL;
using Employees.Objects;
namespace ConsoleEmployeesTest
{
class Program
{
static void Main(string[] args)
{
try
{
Employee e = DAL.GetEmployeeByID(68); //fails right here...
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.ReadLine();
}
}
}
我得到了一个例外
System.TypeInitilizationException:Employees.DAL.DAL的类型初始化程序抛出
例外 - &gt; System.NullReferenceException:未将对象引用设置为
的实例对象。
这是因为新应用程序没有看到app.config文件吗?
答案 0 :(得分:1)
考虑将配置文件作为资源添加到DLL中,然后在运行时从资源中读取值。