[英]Initialize and scope a generic abstract class
我有以下代碼
var dataCollection;
if (ViewBag.WageType.ToLower() == "perm")
{
dataCollection = ViewBag.PermWageIndex;
}
else if(ViewBag.WageType.ToLower() == "trial")
{
dataCollection = ViewBag.TrialWageIndex;
}
返回類型可以是AbstractClass<Concrete1>
或AbstractClass<Concrete2>
。 我必須在聲明時初始化 var。 但是,這意味着我失去了我想要的 scope。 如何在不依賴 ViewBag 的情況下修改此代碼以允許動態 dataCollections?
解決此問題的唯一方法是提供基礎 class 或由Concrete1
和Concrete2
繼承/實現的接口,以便您可以將dataCollection
聲明為AbstractClass<ISomething>
。
Var 不是動態類型,它在編譯時解決。 因此,您不能在沒有賦值( var x;
)的情況下聲明變量,因為編譯器無法推斷類型。
您可以回object
或dynamic
,但是如果這樣做,您會失去任何類型安全性。
您也許可以讓AbstractClass<>
實現接口IAbstractClass
,然后使其成為通用類型。
這是否有效取決於返回類型需要訪問的成員。 顯然,它不能引用任何泛型類型的成員,但這無論如何都沒有多大意義,因為我假設消費者不應該知道泛型參數是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.