[英]Method receiving and returning generic type - how to do it?
我有一個包含一些樣本的Frame
。 我想要一個將這些樣本轉換為另一種數字類型的方法AsType
。
我嘗試了此操作,但由於找不到The type or namespace 'TargetType' cannot be found
。 另外,對於為什么它不起作用以及如何找到正確的方法來思考和正確使用它,我有些困惑。
public class Frame<T>
{
public T[] Samples { get; protected set; }
public Frame(IEnumerable<T> Samples)
{
Samples = Samples.ToArray();
}
public Frame<TOut> AsType(Type TOut)
{
// line below doesn't work
return new Frame<TOut>(Samples.Select(s => (TOut)s));
}
}
您不需要為此使用方法參數 ,但需要一個通用參數 :
//don't miss this parameter!
public Frame<TOut> AsType<TOut>()
{
return new Frame<TOut>(Samples.Select(s => (TOut)s));
}
TOut
是通用參數,因此不需要額外的類型參數。 但是請注意,調用此方法的類型必須存在一個顯式轉換,否則(TOut)s
將拋出InvalidCastException
。
您可以使用Cast<>
擴展名更改代碼:
public Frame<TOut> AsType<TOut>()
{
return new Frame<TOut>(Samples.Cast<TOut>());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.