私はdllを作成しました。あなたが下記のようにPersonVM
という名前のクラスを含んでいます。その作業...実行時にDLLアセンブリを生成して変更しますか?
public ActionResult Index()
{
using (CSharpCodeProvider codeProvider = new CSharpCodeProvider())
{
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "Per.dll";
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, "public class PersonVM{ " + "public int id{get;set;}" +
"public string Name{get;set;}" + "public string LName{get;set;}" + " }");
}
Assembly assembly = Assembly.LoadFrom("Per.dll");
var type = assembly.GetType("PersonVM");
var d = type.GetProperties();
object obj = Activator.CreateInstance(type, true);
return View(obj);
}
しかし、このコードはインデックスコントローラで一度だけ動作しています。 例えばその、ここで私のDLLのクラスを変更しない:
public ActionResult Conf()
{
using (CSharpCodeProvider codeProvider = new CSharpCodeProvider())
{
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "Per.dll";
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, "public class PersonVM{ " + "public int id{get;set;}" +
"public string Name{get;set;}" + "public string LName{get;set;}" + "public string LNamee2 { get; set; }" + "public string L4 { get; set; }" + " }");
}
Assembly assembly = Assembly.LoadFrom("Per.dll");
var type = assembly.GetType("PersonVM");
object obj = Activator.CreateInstance(type, true);
List<ClassInfoVM> model = obj.GetType().GetProperties()
.Select(T => new ClassInfoVM()
{
PropName = T.Name,
TypeOfProp = T.PropertyType.Name
}).ToList();
return View(model);
}
いかなる誤りについての事はありません...それはちょうど私のdllクラスを変更していません... DLLクラスPersonVM
はちょうどどのプロパティが含まれています初めて設定したIndex
実行時にこれらのクラスをビルドしているのはなぜですか?あなたのコメントのために –
ありがとうございます。私は実際にこのクラスをビューモデルとして使用したいと考えています。つまり、ユーザーがビューモデルと多分モデルをダイナミックに提供できるようにしたいということです。 in mvc EntityFramework –