未知のパラメータでメソッドを生成する方法は?私はC#のスクリプトをコンパイルするMicrosoft.CSharp.dll
を使用未知のパラメータでメソッドを生成するには?
:
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters compilerParams = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true };
string scriptCode = GetFullCode(); //here i add usings and so on
var results = provider.CompileAssemblyFromSource(compilerParams, scriptCode);
だから、私はいくつかのいくつかの機能を追加する必要がありますが、この機能は、任意の数のパラメータとし、種類(DateTime
、int
、double
のリストにすることができ等々)。その上
function(String,String,DateTime,int,...);
または
function(DateTime,int,String,..);
と:
機能は次のように呼び出す必要があります。
ユーザーはコード内でこの機能を使用できます。
この関数の生成方法は? は一例として、私は今、コードを生成する方法を教えて:
// GetFullCode:
StringBuilder sb = new StringBuilder();
foreach (DictionaryEntry de in Assembles)
{
foreach (var us in de.Value.ToString().Split(new char[] { ';' }))
{
if (!string.IsNullOrWhiteSpace(us))
sb.AppendLine("using " + us + ";");
}
}
sb.AppendLine("namespace " + Namespace + "\n{");
sb.AppendLine(GetClassCode());
if(withMainFunc)
{
sb.AppendLine(@"static class Program
{
[STAThread]
static void Main()
{
//some init code
}
}");
}
sb.AppendLine("}");
なぜあなたは、引数の未定義の範囲をしたいですか、なぜ単に与えられたデータを持つオブジェクトを解析できませんか?次に、オブジェクト内の属性を操作することができます。 –
@MartinM 'string.Join()'または 'string.Concat()'はこの振る舞いを持ち、存在する資格があります – fubo