[英]Is it possible to make an anonymous class inherit another class?
這是一個很長的鏡頭,但我有一個有趣的編碼情況,我希望能夠動態創建匿名類,但能夠將它們作為參數傳遞給期望接口或子類的方法。 換句話說,我希望能夠做到這樣的事情:
public class MyBase { ... }
public void Foo(MyBase something)
{
...
}
...
var q = db.SomeTable.Select(t =>
new : MyBase // yeah, I know I can't do this...
{
t.Field1,
t.Field2,
});
foreach (var item in q)
Foo(item);
除了使用命名類之外,還有什么方法可以做到這一點嗎?
不會。匿名類型總是隱式派生自object
,並且永遠不會實現任何接口。
來自C#5規定的第7.6.10.6節:
匿名對象初始值設定項聲明匿名類型並返回該類型的實例。 匿名類型是直接從
object
繼承的無名類類型。
因此,如果您想要一個不同的基類, 或者您想要實現一個接口,則需要一個命名類型。
無法擴展匿名但您可以聲明您的方法接受動態參數,如果您真的需要這個工作。
簡答:不
答案很長:您可以使用C#代理類。 有幾種工具可以代理類。 例如Moqs。 https://github.com/moq/moq4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.