早上好。
让我给你看一些代码:
//Db is a database of Tag objects, sort of
Db db;
string code = "123";
var selectedTag = db.Select(new Predicate<Tag>(tag => tag.Code == code));
//...
class Db
{
//A query method, accepting a Predicate
public Tag Select(Predicate<Tag> predicate)
{
/* Here, using Intellisense, I see that Target property is a Tag object,
but I can't cast it to Tag! Why??
*/
var t = predicate.Target as Tag; //Always null!
}
}
我基本上有一个简单的Tag
对象数据库;当调用者调用Select
方法时,我会从中检索Tag
对象istance predicate
,但实际上我无法让它工作。
在调试中使用 Intellisens,当我在Select
方法中时,我清楚地看到它predicate.Target
引用了我的Tag
对象,但我不知道如何检索它。
有任何想法吗?
谢谢你。
编辑
如果我尝试不安全地投射predicate.Target
到Tag
,这样:
var t = (Tag)predicate.Target;
我得到一个InvalidCastException
; 好的,但是Exception
消息说我不能将 type 的对象DbTests
转换为 type Tag
。
DbTests
是我用于测试目的的 NUnit 测试类(显然...:)。
奇怪的!
编辑 2
行中的错字:
var selectedTag = db.Select(new Predicate<Tag>(tag => tag.Code == code));