Ho il nome del modello salvato nel mio database. Lo ottengo usando determinate query. Ora ho bisogno di tenere il nome del modello in un certo tipo di variabile e di istanziarlo dinamicamente. Così posso usarlo per ulteriori elaborazioni. Voglio qualcosa di simile. Per favore aiuto!
public string Checker(int Id)
{
var dataContext = new PetaPoco.Database("MessageEntity");
var jsonOLD = dataContext.SingleOrDefault<OldData>("Select OldJson from MakerChecker2 where MakerCheckerId=@0", Id);
var jsonNEW = dataContext.SingleOrDefault<NewData>("Select NewJson from MakerChecker2 where MakerCheckerId=@0", Id);
var modelName = dataContext.SingleOrDefault<NameOfModel>("Select ModelName from MakerChecker2 where MakerCheckerId=@0", Id);
MakerCheckerModel mcmodel = new MakerCheckerModel();
mcmodel.OldJson = jsonOLD.OldJson;
mcmodel.NewJson = jsonNEW.NewJson;
mcmodel.ModelName = modelName.ModelName;
var modelname = mcmodel.ModelName;
UserModel olduser = JsonConvert.DeserializeObject<UserModel>(mcmodel.OldJson);
//The way usermodel is hardcoded here. I need it to be dynamic. So that It can work for several data.Something Like this.
mcmodel.ModelName olduser = JsonConvert.DeserializeObject<mcmodel.ModelName>(mcmodel.OldJson);
}
Per favore aiuto!!
risposte:
0 per risposta № 1È necessario memorizzare il nome completo del modello (Namespace.ModelName).
var myObj = Activator.CreateInstance(Type.GetType("NameSpace.Model"));
Spero che questo aiuto.
Controllare questo .NetFiddle
Fammi sapere se hai ancora problemi
Aggiornare: Lascia che questo sia il tuo codice
var dataContext = new PetaPoco.Database("MessageEntity");
var jsonOLD = dataContext.SingleOrDefault<OldData>("Select OldJson from MakerChecker2 where MakerCheckerId=@0", Id);
var jsonNEW = dataContext.SingleOrDefault<NewData>("Select NewJson from MakerChecker2 where MakerCheckerId=@0", Id);
var modelName = dataContext.SingleOrDefault<NameOfModel>("Select ModelName from MakerChecker2 where MakerCheckerId=@0", Id);
Ora puoi creare l'istanza del tuo modello in questo modo.
var myObj = Activator.CreateInstance(Type.GetType(modelName)); //(Make sure your modelName include namespace eg. NameSpace.ModelName)
0 per risposta № 2
Ho finalmente risolto questo in questo modo.
public string Checker(int Id)
{
var dataContext = new PetaPoco.Database("MessageEntity");
var jsonOLD = dataContext.SingleOrDefault<OldData>("Select OldJson from MakerChecker2 where MakerCheckerId=@0", Id);
var jsonNEW = dataContext.SingleOrDefault<NewData>("Select NewJson from MakerChecker2 where MakerCheckerId=@0", Id);
var modelName = dataContext.SingleOrDefault<NameOfModel>("Select ModelName from MakerChecker2 where MakerCheckerId=@0", Id);
MakerCheckerModel mcmodel = new MakerCheckerModel();
mcmodel.OldJson = jsonOLD.OldJson;
mcmodel.NewJson = jsonNEW.NewJson;
mcmodel.ModelName = modelName.ModelName;
var modelname = mcmodel.ModelName;
string fullName = "MessageCompose.Models." + modelname;
Type type = Type.GetType(fullName);
Object obj = (Activator.CreateInstance(type));
dynamic olduser = JsonConvert.DeserializeObject(mcmodel.OldJson,obj.GetType());
dynamic newuser = JsonConvert.DeserializeObject(mcmodel.NewJson,obj.GetType());
}
Grazie a tutti coloro che hanno aiutato. Può aiutare gli altri