2011-07-28 3 views
4

У меня есть DATAACCESS класс со многими методами и получить доступ к одному из методов я использую кодГрупповые методы в классе

var dataAccess = new DataAccess(); 
var s = dataAccess.GetDailyStatistic(...); 

Я хотел бы сгруппировать эти методы, не статический класс и доступ к ним так

var dataAccess = new DataAccess(); 
var s = dataAccess.Statistic.GetDaily(...); 

Каков наилучший способ достижения этого? Вложенные классы?

DataAccess класс структура.

public class DataAccess : DataAccessor 
{ 
    public int AddUser(string orderId, string email, string userPassword, string firstName, string lastName, 
           int membershipId, string store, string country) 
    public void DeleteBlockedUser(string email) 
    public void DeleteUserById(int userId) 
    public MembershipTypes GetMembershipType(int membershipId) 
    public MembershipTypes GetUserMembershipType(int userId) 
    public int? GetUserId(string email) 
    public void UpdateUserExpirationDate(string orderId) 
    public void UpdateUserCredits(int userId, int membershipId) 
    public List<UserEntity> LoadUser(string email, string password) 
    public string GetUserIdFromAuthList(string url) 
    public UserEntity LoadUserById(int id) 
    public UserEntity LoadUserByOrderId(string orderId) 
    public void UpdateUser(int id, string email, string password, string firstName, string lastName) 
    public void UpdateStatistic(string id, string url, string agent, string ip, string pageTitle) 
    public List<StatisticEntity> GetStatistic(int userId, DateTime from) 
    public void GetDailyStatistic(int userId, int days, string url, out string[] arrLabels, out int[] arrValues, out int maxValue) 
    public void GetWeeklyStatistic(int userId, string url, DateTime from, out string[] arrLabels, out int[] arrValues, out int maxValue) 
    ...skip... 
} 

ответ

2

Почему бы не сделать класс DataAccess абстрактным и наследовать от него его подкласс? Я предполагаю, что у вас есть все методы внутри DataAccess, используя какое-то соединение с базой данных, если вы наследуете его, вы все равно можете поделиться этим соединением между детьми. Вы бы не иметь, что один конструктор больше, но вы могли бы сделать что-то вроде

var statistic= new Statistic(); 
var s = statistic.GetDaily(...); 

И если вы действительно любите имя DATAACCESS, поместить эти дочерние классы в пространстве имен DATAACCESS, так что это может выглядеть.

var statistic= new DataAccess.Statistic(); 
var s = statistic.GetDaily(...); 
Смежные вопросы