[過去ログ] C#, C♯, C#相談室 Part96 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
81
(2): デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 12:57:34.90 ID:5Mv4IyiB0(1/7) AAS
>>69
69(5): デフォルトの名無しさん (ワッチョイ 37e6-n5CG) [sage] 2022/02/11(金) 22:10:25.35 ID:dtTIM78z0(2/2) AAS
>>66,67
すみませんありがとうございます
Tが色々な型のFuncを登録したいのですがinterfaceの書き方がわかりません
Genericだとコンパイル時点で型決定する必要があるから、色々な型に対応させたいとかなると
>>74
74(1): デフォルトの名無しさん (ワッチョイ 372f-aqmw) [sage] 2022/02/11(金) 22:34:33.50 ID:w2aWSXHv0(2/2) AAS
Dictionary<string, Func<object, object>>ではだめなのか
が言ってるみたいにobjectにするか、dynamicにでもするしかない
84: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 14:40:02.85 ID:5Mv4IyiB0(2/7) AAS
>>82
82(1): デフォルトの名無しさん (ワッチョイ b7d2-fdHv) [sage] 2022/02/13(日) 14:18:56.36 ID:3OIdnfKh0(1/4) AAS
>>81
嘘教えんな
ジェネリクス定義側はFunc<T, TResult>みたいにコンパイルに型決まってないだろうが

Func<object, object> とかいうクソみたいな型を使わせようとするな
なら出来るやり方言ってみろよ
87: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 14:48:17.51 ID:5Mv4IyiB0(3/7) AAS
>>85
85(3): デフォルトの名無しさん (ワッチョイ b7d2-fdHv) [sage] 2022/02/13(日) 14:40:38.46 ID:3OIdnfKh0(2/4) AAS
いろんな型のFuncを受け付けるようにするならそれ用のclassを作ってしまった方が手っ取り早い

public class MyDictinary<T, TResult> : Dictinary<string, Func<T, TResult>{...}

Funcをなんでも受け付けるようにするなら
public class MyDictinary<TDelegate> : Dictinary<string, Func<T, TResult> where TDelegate: Delegate {...}

どうしてもinterfaceにしなくちゃいけないなら
public interface IMyDictinary<T, TResult> : IDictinary<string, Func<T, TResult>{...}

ごちゃ混ぜのFuncを受け付けるようにするとFunc呼び出し時に大変な思いをするだけだからやらん方がいい
それで違う型の引数のdelegateどうやって突っ込むつもりだ?
アホなのか
91: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 15:28:36.94 ID:5Mv4IyiB0(4/7) AAS
そもそも、そのDictionary使って何したいかまでは知らんから
それを言えば、もう少しマシな案なりが出てくるとは思うが
94
(1): デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 16:07:38.09 ID:5Mv4IyiB0(5/7) AAS
単純なインターフェース使う例だとこんなもんかな
受け取る結果の型が決まってるなら、dynamic使わんで済むけど
public interface IJob
{
dynamic Run();
}

public class SomeJob<T1, T2> : IJob
{
public T1 Param1 {get;}
public T2 Param2 {get;}

public SomeJob(T1 param1, T2 param2)
{
Param1 = param1;
Param2 = param2;
}
public dynamic Run() => (dynamic)Param1 + (dynamic)Param2;
}

public static void Main()
{
var dic = new Dictionary<string, IJob>()
{
{"a", new SomeJob<int, double>(2, 3.3) },
{"b", new SomeJob<float, double>(5.5f, 16.612340) },
};
Console.WriteLine(dic["a"].Run());
Console.WriteLine(dic["b"].Run());
}
95: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 16:11:15.84 ID:5Mv4IyiB0(6/7) AAS
SomeJobをジェネリックにしたけど、別にIJobを実装したクラス個別に作っても構わない
97: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 17:24:19.17 ID:5Mv4IyiB0(7/7) AAS
さすがにそれは判るわw
>>69でinterfaceが判らんって書いてるからサンプルで出しただけ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s