gpt4 book ai didi

c# - 在通用提供程序中如何查找和编辑 T 的属性? (C#)

转载 作者:行者123 更新时间:2023-11-30 21:18:29 25 4
gpt4 key购买 nike

因此,我正在为我的存储库实现创建一个通用提供程序,我的 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();
}
}

我将不胜感激。

最佳答案

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

public class Provider<T> where T : ICommonInterface

然后您将可以在编译时访问接口(interface)或基类提供的共享成员。

关于c# - 在通用提供程序中如何查找和编辑 T 的属性? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com