C#. Définir un membre de la valeur de l'objet en utilisant la réflexion
J'ai besoin de votre aide avec le code suivant ci-dessous. Fondamentalement, j'ai une classe appelée "Travail" qui a certains champs publics. Je suis de passage à ma "méthode ApplyFilter" deux paramètres "job_in" et "job_filters". Premier paramètre contient des données réelles, et le second a des instructions (le cas échéant). J'ai besoin de parcourir "job_in" objet, à le lire, appliquer les directives données par la lecture de "job_filters", modifier des données (si nécessaire) et de retour dans un nouveau "job_out" objet. Tout fonctionne bien jusqu'à ce que je besoin de stocker mes données "job_out" objet:
public class Job
{
public string job_id = "";
public string description = "";
public string address = "";
public string details = "";
}
...
private Job ApplyFilters(Job job_in, Job job_filters)
{
Type type = typeof(Job);
Job job_out = new Job();
FieldInfo[] fields = type.GetFields();
//iterate through all fields of Job class
for (int i = 0; i < fields.Length; i++)
{
List<string> filterslist = new List<string>();
string filters = (string)fields[i].GetValue(job_filters);
//if job_filters contaisn magic word "$" for the field, then do something with a field, otherwise just copy it to job_out object
if (filters.Contains("$"))
{
filters = filters.Substring(filters.IndexOf("$") + 1, filters.Length - filters.IndexOf("$") - 1);
//MessageBox.Show(filters);
//do sothing useful...
}
else
{
//this is my current field value
var str_value = fields[i].GetValue(job_in);
//this is my current filed name
var field_name = fields[i].Name;
// I got stuck here :(
//I need to save (copy) data "str_value" from job_in.field_name to job_out.field_name
//HELP!!!
}
}
return job_out;
}
S'il vous plaît aider. J'ai vu quelques échantillons à l'aide de propriétés, mais je suis sûr que c'est possible de faire de même avec les champs. Merci!
OriginalL'auteur Gary | 2011-11-13
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Est bon; vous êtes en charge du dossier de
o == null
dans votre mission desafeValue
, il n'est donc pas nécessaire de vérifier les ci-dessus.Oui, vous avez raison
Merci les amis ,Maintenant je l'ai montée
merci! 🙂
OriginalL'auteur DeveloperX
OriginalL'auteur JRoughan