I have some problem. I want to creating instance of class by name. I found Activator.CreateInstance
http://msdn.microsoft.com/en-us/library/d133hta4.aspx and it works fine, and I found this: Setting a property by reflection with a string value too.
But how to do both od this? I mean, I know the name of class, I know all properties in that class and I have this in string. For example:
string name = "MyClass"; string property = "PropertyInMyClass";
How to create instance and set some value to properties ?
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.
C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.
What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.
You could use Reflection:
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); } }
If you had System.TypeLoad Exception, your class name is wrong.
To method Type.GetType you must enter assembly-qualified name. That is with the project name For example: GenerateClassDynamically_ConsoleApp1.Foo
If it is in another assembly jou must enter assembly name after comma (details on https://stackoverflow.com/a/3512351/1540350): Type.GetType("GenerateClassDynamically_ConsoleApp1.Foo,GenerateClassDynamically_ConsoleApp1");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With