あなたはpList<T>
に直接List<T>
をキャストすることはできません。あなたは拡張メソッドを作ることができます(ちょうどToList
のように)。あなたのクラスと仮定すると、リストを移入するIEnumerable<T>
を取るコンストラクタがあります。
static class EnumerableExtensions
{
static pList<T> ToPList<T>(this IEnumerable<T> sequence) { return new pList<T>(sequence); }
}
あなたのクラスは、コンストラクタを持っていない場合は、1を追加したり、このような何かを行うことができ、次のいずれか
static class EnumerableExtensions
{
static pList<T> ToPList<T>(this IEnumerable<T> sequence)
{
var result = new pList<T>();
foreach (var item in sequence)
result.Add(item);
return result;
}
}
私のpListクラスは、IEnumerableがあなたの拡張メソッドを追加したコンストラクタを持っていますが、まだリスト内のToPList()を見ることができません。あなたは、このようなコンストラクタを持っている、とあなたはpList<T>
に既存のList<T>
を変換したい場合、あなたはもちろん、これを行うことができます
まず、:拡張メソッドを使用するには
List<T> originalList = GetTheListSomehow();
var newList = new pList<T>(originalList);
を、あなたがする必要はありメソッドが有効範囲内にあることを確認してください。私は私の例にアクセス修飾子を追加しませんでした。必要に応じて、中internal
またはpublic
を置く:
public static class EnumerableExtensions
{
internal static pList<T> ToPList<T> //...
また、あなたは別の名前空間に拡張メソッドを使用したい場合は、あなたがスコープでusing
ディレクティブを持っている必要があります。他の場所
namespace A { public static class EnumerableExtensions { ...
:例えば
using A;
// here you can use the extension method
namespace B
{
public class C
{
...
又は
namespace B
{
using A;
// here you can use the extension method
public class C
{
...
こんにちは、私のPLISTクラスは IEnumerableをあなたの拡張メソッドを追加したが、私は内、まだほん()を参照することができません取るコンストラクタを持っていますリスト何か不足していますか? –
@JarmezDeLaRocha "List' "の中ではどういう意味ですか?インテリセンスの意味ですか? –
phoog
そうだね、リストをするとき。私はtolistやtoarrayを見ているようにtoplistの例は見ません。私はポイントを逃していますか?私はちょうどこれらの拡張メソッドでsoemの読書をしています今は私に新しいです! –