0

プロジェクトのコーディング中。文字列式を介してメソッドまたは型のメンバーを呼び出す必要がある状況になりました。たとえば、 DateTime.Today値の結果を結果ボックスまたは変数に取得したい..

文字列式から関数またはクラスのメンバーを呼び出す方法はありますか?

ここに私が探している例のいくつかがあります。

  1. DateTime.Now

  2. DateTime.Today.ToString("dd-MM-yyyy")

  3. Environment.SpecialFolder.ApplicationData

上記は、ユーザーがテキストボックスに渡し、任意のボタンから呼び出して結果を取得できる式の一部です。

4

2 に答える 2

0

式の最初の部分が常に型である場合は、リフレクションを使用して型を作成できます。たとえば、次のようなものです。

        string theType = "System.DateTime";
        Type t = Type.GetType(theType);
        Object o = Activator.CreateInstance(t);

ただし、メソッド/プロパティを呼び出すには、オブジェクトを型にキャストする必要がありますが、実行時まで型がわからないため、問題が発生します。

アプローチを再考する必要があると思います。表現を構築するために、リストからいくつかのオプションを選択できるインターフェースをユーザーに提供できるかもしれません。たとえば、DateTime、Environment などを選択させてから、その選択に基づいて他のオプションを選択させます (たとえば、DateTime を選択した場合は Now など)。

あなたがやろうとしているような式を自由形式で解析することは、難しく、せいぜいハック的です。

于 2013-06-19T13:04:24.107 に答える