c#为类中的每个方法添加参数

时间:2014-12-28 18:59:13

标签: c#

public class BaseDAL
{
    protected object GetOrder(int id)
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }

    public object GetByID(int id)
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }
}

是否有任何选项可以添加此参数int id 对于类中的任何函数而不写每个函数?

像:

public class BaseDAL : ADD SOME CODE THAT SHARE int id for all funcs
{
    protected object GetOrder()
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }

    public object GetByID()
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }
}

GetOrder(12);将有效。 我希望这样做只是为了减少代码。

2 个答案:

答案 0 :(得分:1)

您可以在构造函数中设置ID参数,如下所示:

public class BaseDAL
{

    public BaseDAL(int ID)
    {
       this.id= ID;
    }

    int id;

    protected object GetOrder()
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }

    public object GetByID()
    {
        using (var DB = AccessManager.db)
        {
            return DB.Videos.Where(x => x.ID == id).SingleOrDefault();
        }
    }
}

这允许你编写这样的代码:

var result = new BaseDAL(5).GetOrder();

您还可以将此与其他答案结合使用,以便您拥有可以设置和更改的属性。但我真的不认为这两个都是个好主意。我认为你已经拥有的更好。此外,我认为您最好还是返回OrderVideo个对象,而不是Object

答案 1 :(得分:0)

向您的班级添加CurrentIndex媒体资源

public class BaseDAL
{
    public CurrentIndex { get; set; }

    public Order GetOrder()
    {
        using (var DB = AccessManager.db) {
            return DB.Videos.Where(x => x.ID == CurrentIndex).SingleOrDefault();
        }
    }

    ...
}

并像这样使用

var dal = new BaseDAL();
dal.CurrentIndex = 5;
var result = dal.GetOrder();