una sirve que propiedades propiedad poo para metodos informatica entre diferencia definicion clase campo autoimplementadas agregar c# reflection

sirve - C#creando instancia de clase y establece propiedades por nombre en cadena



propiedades en informatica definicion (3)

Podrías usar Reflexión:

using System; using System.Reflection; public class Foo { public string Bar { get; set; } } public class Program { static void Main() { string name = "Foo"; string property = "Bar"; string value = "Baz"; // Get the type contained in the name string Type type = Type.GetType(name, true); // create an instance of that type object instance = Activator.CreateInstance(type); // Get a property on the type that is stored in the // property string PropertyInfo prop = type.GetProperty(property); // Set the value of the given property on the given instance prop.SetValue(instance, value, null); // at this stage instance.Bar will equal to the value Console.WriteLine(((Foo)instance).Bar); } }

Tengo algunos problemas. Quiero crear instancia de clase por nombre. Encontré Activator.CreateInstance http://msdn.microsoft.com/en-us/library/d133hta4.aspx y funciona bien, y encontré esto: establecer una propiedad por reflexión con un valor de cadena también.

Pero, ¿cómo hacer tanto od esto? Quiero decir, sé el nombre de la clase, sé todas las propiedades de esa clase y tengo esto en cadena. Por ejemplo:

string name = "MyClass"; string property = "PropertyInMyClass";

¿Cómo crear una instancia y establecer algún valor en propiedades?


Si tuvo la excepción System.TypeLoad, el nombre de su clase es incorrecto.

Para el método Type.GetType debe ingresar un nombre calificado por el ensamblaje . Eso es con el nombre del proyecto Por ejemplo: GenerateClassDynamically_ConsoleApp1.Foo

Si está en otro conjunto, debe ingresar el nombre del conjunto después de la coma (detalles en https://.com/a/3512351/1540350 ): Type.GetType ("GenerateClassDynamically_ConsoleApp1.Foo, GenerateClassDynamically_ConsoleApp1");


Type tp = Type.GetType(Namespace.class + "," + n.Attributes["ProductName"].Value + ",Version=" + n.Attributes["ProductVersion"].Value + ", Culture=neutral, PublicKeyToken=null"); if (tp != null) { object o = Activator.CreateInstance(tp); Control x = (Control)o; panel1.Controls.Add(x); }