2017-12-31 37 views
0

私はコンパイルする前に、まだ私の方法では、引数に動的にフィットタイプにしたい、私は意味:動的フィットタイプ

public class Foo 
{ 
    public int Prop1; 
    public string Prop2; 
} 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     Foo foo = MakeMethod(x => x.Prop1, 5); //good, Prop1 is int type, 5 isn't underlined in red in VS 
     Foo foo = MakeMethod(x => x.Prop2, 10); //bad, Prop2 is string, not int, VS underlines 10 in red, and I want this behaviour 
    } 

    private static Foo MakeMethod(Func<Foo, object> prop, object val) 
    { 
     Foo result; 
     //do some stuff 
     return result; 
    } 
} 

は私がオブジェクト型で何かを行う必要があります知っているが、私は何を知りません。私は単純に2番目のジェネリックprop引数がvalの型かどうかを調べることができます。そうでなければ私のメソッドに戻りますが、それは私を満足させるものではありません。動的な型を使用したくないのは、プログラムを実行した後に例外が発生するためです。コード作成段階ではありません。あなたはジェネリック医薬品を探している

答えて

5

private static Foo MakeMethod<T>(Func<Foo, T> prop, T val)