Tôi đang cố gắng phát triển một khung công tác cho một số ứng dụng mà chúng tôi đang phát triển ở đây và một trong các lớp khung mà tôi đang cố gắng xây dựng để tạo cơ sở dữ liệu. Lý tưởng nhất, tôi sẽ có một phương pháp mà tôi có thể vượt qua nó hai phương pháp sau đây: CreateDatabaseTables() và ResetDatabaseValues ();Chuyển nhiều phương thức (delegate?)
Ví dụ, tôi có thể có ba ứng dụng mà tôi sẽ gọi Application1, Application2 và Application3; mỗi ứng dụng này sẽ có một lược đồ cơ sở dữ liệu khác nhau mà tôi sẽ kết hợp thành mã (ví dụ: CreateDatabaseTables có một loạt các lệnh "Tạo bảng"). Tôi muốn tạo ra một phương pháp cơ sở dữ liệu duy nhất có thể được sử dụng bởi mỗi người trong số những cái nó sẽ giống như thế:
Application1
BuildLocalDatabase(CreateTablesForApp1(),ResetDatabaseValuesforApp1())
Application2
BuildLocalDatabase(CreateTablesForApp2(),ResetDatabaseValuesforApp2())
Application3
BuildLocalDatabase(CreateTablesForApp3(),ResetDatabaseValuesforApp3())
Phương thức BuildLocalDatabase sẽ thực hiện như sau:
publid bool BuildLocalDatabase(CreateTablesForApp(),ResetDatabaseValuesforApp())
{
- see if database file exists; if it does, delete it
- create a new database file
- call CreateTablesForApp
- if the tables were created successfully, call ResetDatabaseValuesForApp
}
Bất kỳ suy nghĩ nào về cách tôi có thể thực hiện việc này. Thực tế là một loạt các xác nhận và các thứ khác mà tôi muốn thực hiện trong hàm BuildLocalDatabase và rõ ràng là mục tiêu của tôi ở đây là giảm thiểu số lượng mã trùng lặp trong mỗi ứng dụng ... bất kỳ đề xuất nào về cách thực hiện điều này. Tôi nghĩ rằng trong C + +, tôi có thể có chỉ cần thông qua các CreateTablesForApp và ResetDatabaseValuesForApp phương pháp như các điểm chức năng, nhưng nó không có vẻ như có một cách để làm điều này trong C#. Và các đại biểu dường như xử lý nó tốt vì tôi thực sự chỉ giới hạn trong một phương thức (và multicast dường như muốn chạy các phương thức hai lần).
Bạn có thể muốn xem xét định dạng mã trong câu hỏi của mình để mọi người có thể đọc nó dễ dàng hơn. –