作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于 Loan、Client 和 Book 类型,我有三个类似的方法。我是一名编程学生,我想知道是否可以传入参数,一个与这 3 个类匹配的泛型类型,我的意思是在括号之间传递一个不同的类型,如 <T>
,三个类只有一个方法。我试过 <object>
但它不起作用。
public void LoadStoreLoans(ObservableCollection<Loan> loansCollection)
{
IList<Loan> loans = db.Query<Loan>(); //db4o
loansCollection = loans != null ? new ObservableCollection<Loan>(loans) : new ObservableCollection<Loan>();
}
谢谢。
最佳答案
是的,如果你总是替换它(这不是可观察集合的目的),我建议让集合成为一个返回值:
public ObservableCollection<T> LoadStoreCollection<T>()
{
IList<T> queried = db.Query<T>();
return queried != null ? new ObservableCollection<T>(queried) : new ObservableCollection<T>();
}
第一次尝试使用对象:我从未使用过 db4o,但我认为它在 Load
中使用给定的类型参数( T
或 Query
)函数来推断要查询哪个表。鉴于 object
产生错误,因为没有 object
的表.您需要指定代理类型或更好的类型 - 泛型类型参数 - 它将在执行期间绑定(bind)到实际类型。当用 T = Loan
调用时, db.Query
电话可以查询Loan
表格就好像你会写 db.Query<Loan>
首先。
由于集合是问题中的一个参数,因此可能会认为您会针对同一个 T
多次调用该函数。 , 但:始终使用 new
重新初始化相同的可观察集合变量禁用可观察集合可以提供的所有好处,例如,您永远不会收到集合更改事件(因为您监听被替换的集合),您不能将它绑定(bind)到控件,如果您将其他对象注册到该事件,你会引入一个内存洞:)
关于c# - C# 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22172779/
我是一名优秀的程序员,十分优秀!