因此,我正在为我的存储库实现创建一个通用提供程序,它将由BaseController(ASP.NET MVC 2)用于低级对象。这些对象具有共同的操作,例如“激活/停用/删除/编辑”,因此我将始终在每个对象上使用相同的属性。问题是,由于我不知道T是什么,所以我显然无法访问其属性。

因此,我的问题是,有人可以告诉我如何从对象中获取所需的属性。我见过一些人在谈论反射,其他人则在谈论表达树,但我都不知道该如何使用。

我确实有一个通用存储库,我相信它使用表达式树(从某些网站复制),但是同样,我不知道我在用它做什么...如果有帮助,这是到目前为止我所拥有的:

public class Provider<T> where T : class {
    private readonly Repository<T> Repository = null;

    public Provider(
        Repository<T> Repository) {
        this.Repository = Repository;
    }

    public void Activate(
        int Id) {
        T Entity = this.Repository.Select(Id);

        // Need to get the property here, change it and move on...

        this.Repository.Submit();
    }
}


我对此表示感谢。

最佳答案

如果这些类具有共同的操作,听起来它们应该从相同的基类继承或实现相同的接口,对吗?如果是这样,请使用该接口/库作为T的约束

public class Provider<T> where T : ICommonInterface


然后,您将可以对接口或基类提供的共享成员进行编译时访问。

09-10 00:33
查看更多