簡體   English   中英

子類相關linq表達式字典

[英]Dictionary of sub-class related linq expressions

考慮下面的代碼示例,為基類和子類建模:

class Entity
{
}

class Dough : Entity
{
}

class Bread : Entity
{
    IEnumerable<Dough> TypesOfDough { get; set; }
}

class Baker : Entity
{
    IEnumerable<Bread> TypesOfBread { get; set; }
}

我可以使用LINQ表達式來表達屬性,如下所示:

Expression<Func<Bread, IEnumerable<Dough>>> BreadDough = bread => bread.TypesOfDough;
Expression<Func<Baker, IEnumerable<Baker>>> BakerBread = baker => baker.TypesOfBread;

因此,我具有以下表達式類型:

Expression<Func<Bread, IEnumerable<Dough>>>
Expression<Func<Baker, IEnumerable<Baker>>> 

有沒有什么方法可以定義可以通過基本類型存儲這兩個表達式的字典類型?

我嘗試過,但我的猜測是,協方差或逆方差不允許這樣做。

不,所有類的通用類型參數均不變。 但是,即使不是,或者存儲的是委托而不是表達式,您仍然無法利用方差。 方差允許您將兩個委托的返回類型都視為IEnumerable<Entity> ,但是您不能將兩個輸入值都視為Entity對象,因為您的方法無法將任何實體轉換為指定的輸出 輸入是互變的,因此不允許您統一所有參數的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM