|
■No63856 (らぐんす さん) に返信
> 今まではIEnumerable<T>の部分がDataTableだったので、Class1のままで行けたのですが
> Class1<T>のように変更すると利用している側でどのような修正になるのか、ちょっと想定できません。
> うーん、もう少し粘ってみます。
Class1 を利用する側(Form?)が、型パラメータ T を提供するのですよね。
フィールドやプロパティには型パラメータを指定できないので、
先のように Class1 型自体が T を持つようにするか…それがだめならば
setter/getter のメソッドを用意して、そこで型パラメータを得るとか。
public class TextBoxEx : TextBox
{
public delegate IEnumerable<T> GetInfosHandler<T>();
private Delegate internalGetInfos;
public void SetInfos<T>(GetInfosHandler<T> proc) { internalGetInfos = proc; }
public GetInfosHandler<T> GetInfos<T>(){ return internalGetInfos as GetInfosHandler<T>; }
public void Test<T>()
{
GetInfosHandler<T> infos = GetInfos<T>();
if (infos != null)
{
IEnumerable<T> enums = infos();
}
}
}
// textBoxEx1.SetInfos<int>(delegate { return new[] { 1, 3, 5, 7, 9 }; });
// textBox1.Test<int>();
|