少しの実験として、自分のクラスファイルの1つを編集するコードを書きました。具体的に編集後のソースファイルの更新 - C#
:
namespace Dynamic
{
class DynamicFunction
{
public double Function(double field1, double field2)
{
//Reference
return field1;
//EndReference
}
}
}
私は動的にプログラム自体を通じて '関数' メソッドを編集しています。したがって、field1%field2を返す場合、単に「return field1%field2;」と入力してボタンを押すと、ファイルストリームは実際のソースコードを編集します。
しかし、これはプログラムが閉じられるまでクラスファイルに影響を及ぼさないと思われ、再オープンされたときに有効になります。 dealioは何ですか?
ここで書くコードです:
System.IO.File.Delete(path);
using (System.IO.StreamWriter W = new System.IO.StreamWriter(path))
{
foreach (string s in C)
{
if (!s.Contains("return"))
{
W.WriteLine(s);
}
if (s.Contains("return"))
{
W.WriteLine(textBox3.Text);
}
}
}
int r = 0;
C#がコンパイルされています。ソースの変更は、ソースを再コンパイルしてアプリケーションを再配布するまで有効になりません。 – Chris
ありがとうございます。ユーザーがプログラムを再起動する以外に、これを回避する方法はありますか? – user3112622
いいえ。C#を解釈済みのプログラムにすることはできません。文字列( "field1%field2"のような)を取って動的にコンパイルして評価することで、偽造することができますが、アプリケーションのソースコードを変更して、アプリケーションが再コンパイルされるまで何もすることはできません。 – itsme86