tôi không thể tìm ra lý do tại sao nó đang tìm kiếm một cái gì đó tĩnh:Không thể truy cập lĩnh vực không tĩnh
public class DatabaseBase
{
private readonly string connectionString;
public DatabaseBase(string connectionString)
{
this.connectionString = connectionString;
}
}
public class MyDB : DatabaseBase
{
readonly string connectionString = ConfigurationManager.AppSettings["MyConnectionString"];
public MyDB() : base(connectionString)
{
}
}
tôi nhận được không thể truy cập vào lĩnh vực phi tĩnh 'connectionString' trong bối cảnh tĩnh. Tôi không thấy bất cứ điều gì tĩnh trong lớp cơ sở dữ liệu cơ sở vậy tại sao ??
đây là một ví dụ khi chúng ta đã làm kinda điều tương tự:
partial class Database : DatabaseBase
{
static string DbConnectionString
{
get
{
if (dbConnectionString == null)
dbConnectionString =
ConfigurationManager.AppSettings["MyConnectionString"];
return dbConnectionString;
}
}
public Database() :base(DbConnectionString)
{
}
ok vậy tại sao nó phải là một chuỗi tĩnh cho chuỗi kết nối được thông qua?
để làm cách nào tôi có thể gửi chuỗi kết nối đó đến hàm tạo cơ sở như được yêu cầu? – PositiveGuy
Giải pháp của bạn là tốt nhưng phân tích của bạn là * hoàn toàn không chính xác *. Trường intstance S W được khởi tạo trước khi hàm tạo cơ sở được gọi. Thứ tự của xây dựng đi: khởi tạo trường bắt nguồn, khởi tạo trường cơ bản, cơ sở hàm tạo cơ sở, cơ thể khởi tạo có nguồn gốc. –
Xem các bài viết của tôi về chủ đề này vì sao đặt hàng theo cách đó: http://blogs.msdn.com/ericlippert/archive/2008/02/15/why-do-initializers-run-in-the-opposite-order -as-constructors-part-one.aspx và http://blogs.msdn.com/ericlippert/archive/2008/02/18/why-do-initializers-run-in-the-opposite-order-as-constructors -part-two.aspx –