C# .NET 3.5: Object MyClass = SomeMethodToInstantiate("MyClass"); - Instantiate An Object Given Its String Name?
Dec 2, 2010
In C# .NET 3.5, is there a way to instantiate an object given its string name? For example, suppose I have a DLL (e.g., MyClass.DLL) which contains type MyClass. Is possible to write something like... Object myClass = SomeMethodToInstantiate("MyClass"); // ? Is it possible to do this in VB .NET 3.5?
I have a list of properties and values that i'd like to use to dynamically build an Expression(Of Func(Of MyClass,MyClass))
I can run through the list and create each Expression by itself, but the only way I know how to combine them would be to use Expression.And or Expression.AndAlso, but that returns a BinaryExpression rather than my original Expression(Of Func(Of MyClass,MyClass)).
Is there a simple way to remove Objects from a List by using a specified value?I add 2 persons to a List, how can now I remove a person by a name without using any Loops? (if possible)
dim myCollection as new Specialized.StringCollection dim myFoundThings as new ArrayList dim index as Integer dim newResultMemberName as String
[code]....
This is part of some code that will run without user interaction once it's spinning away, and I need to create a unique object from some items found in a StringCollection, naming the objects using information found in the strings stored in that StringCollection.
The MyClass keyword behaves like an object variable referring to the current instance of a class as originally implemented. MyClass is similar to Me, but all method calls on it are treated as if the method were NotOverridable. I can see how that could kind of be useful, in some specific scenarios. What I can't think of is, how would you obtain the same behavior in C# - that is, to ensure that a call to a virtual method myMethod is actually invoked against myMethod in the current class, and not a derived myMethod (a.k.a in the IL, invoking call rather than callvirt)?
'bug_message is a public shared property Public Shared Sub bug(ByVal bug_message As String) msgbox(XX_format(MyClass.bug_message, bug_message)) End Sub
however i get this error: MyClass is valid only within an instance method. I do not wish to use the actual name of my class, and if i could i would prefer to keep the name of the argument as bug_message as well.
I'm using VS 2010 so I have auto-implemented properties.I have a class and I want to access the properties by a string.[code]But, I also want to be able to access the variables something like this way.[code]How can I setup MyClass to work both ways?
I'm getting a: mypage.aspx.vb(390,0): error BC30002:Type 'MyNamespace.MyClass' is not defined when I try to compile, run, etc. my website. What's really odd is that I don't have anything in my Error List before or after I do this. I wouldn't have an idea of what was wrong, except I have my compile verbosity turned way up. The line it's failing on looks like:
Traditionally, class/type name is literally spelled inside its definition.
Public Class MyCustomClass Public child As MyCustomClass Public Shared Function Clone(ByVal original As MyCustomClass) As MyCustomClass End Class
This is not a problem most of the time; C-languages even use class name as constructor methods' name. But consider a generic declaration:
Public Class MyListOfIntegers Inherits MyCustomList(Of Integer) End Class
[code]....
This scenario has 2 issues. The first one is that constructors are not inherited, and you have to provide pass-through wrappers in every derived class, — this is quiet dumb, but tolerable. The second issue is more severe: derived class inherits CloneMe() method which returns MyCustomList(Of Integer) , not MyListOfIntegers ! Every returned value must be manually DirectCast 'ed for further use with methods that expect MyListOfIntegers . This issue, together with the first one, renders inheritance of generic class almost useless.
So I need a "MyClass" alternative for static type-binding inside type definition. In case of generic type that is referencing other compound types, task could be accomplished by adding second parameter to type section:
Public Class MyCustomList(Of T, TList) ... Public Function CloneMe() As TList
[code]....
But since we must reference our own type, it would create an infinite recursive loop of additional typeparamlist arguments. How can this be resolved, aside of creating separate classes without generics?
I can't seem to find the correct words to search for an answer. I'm using VS 2010 so I have auto-implemented properties.I have a class and I want to access the properties by a string.
Public Class MyClass Property Prop1 As String Property Prop2 As String[code].....
But, I also want to be able to access the variables something like this way....
Dim MyVar = New MyClass MyVar.Items("Prop1") = "Prop1 Value" MyVar.Items("Prop2") = "Prop2 Vaule"
I'm trying to decide whether to get a value, call it X, in my class through a read only property or through a function. Normally I'd code it as a property except in this case the GET involves doing a lookup to a sql table. So there's way more overhead than a simple RETURN X. So my question is, when I instantiate a new object from my class, are all the properties calculated at that point, so that the sql lookup will occur too? Or is the property only evaluated when I actually reference it in the calling code.
i wanted to do something simple that sort of replicate an object:
public function clone(byval realcopy as object) as object return new Control ' something like this works, however i want to return the type of realcopy, which may not be a control end function so i tried this:
public function clone(byval realcopy as object) as object return new gettype(realcopy.gettype) end function
I am having some real issues with this one. I have a class which contains two other objects...but I cannot seem to instantiate those sub objects. Here is the code for my class:
I have an application which I am trying out on machines without mysql. The app runs fine on my local host however when I try to use the application on another machine I am getting the following error:
Access denied for user 'root'@'localhost (using password: YES)
Then I get a .net framework error
System.NullReferenceException: Object reference not set to an instance of an object.
I thought I had exported the DB but I was left with a mysql file which I placed in the bin directory.
i've got a generic class for xml serialization and deserialization.
Public Class clsXMLHandler(Of T) Public Sub serializeFromObject(ByVal filePath As String, ByVal [object] As T) Dim creater As New FileStream(filePath, FileMode.Create) Dim xml As New XmlSerializer([object].GetType) xml.Serialize(creater, [object])
I see a sample code that an object is instantiated within the class definition block. But when I test the folllowing, I got error "Process is terminated due to
I am trying to run a backgroundworker to load data from my DAL (which is available in another class). I want to keep the UI available and not have the "locked up" feel while the object is loading.When I create a simple backgroundworker and Sleep the UI stays responsive and my controls can be updated after the sleep. As soon as I replace the sleep with a call to instantiate the object from my DAL, the UI locks up. Is there someway I can instantiate this object using the background worked and keep the UI responsive?
When the situation object is instantiated it could take several seconds for it to load completely, during this time is when the UI is locked up... It does eventually load just fine.
Private WithEvents backWork As New BackgroundWorker() Dim sit As Situation Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnLoad.Click
If I do this: Dim w As MyClass = otherObject. where "otherObject" is another variable containing an instance of MyClass, I can be sure that w is a completely different variable? I mean, whatever changes I do to w, will NOT affect otherObject, right?
Under component services, a COM+ component is used by the company, right-clicking it and choosing 'Activation' tab will show the 'constructor string' that is used for DB server connection by all applications. How can I access it the simplest way possible?
I have a class library that contains a number of classes. I would like to dynamically create an instance of one of these classes, set its properties, and call a method.
Example:
Public Interface IExample Sub DoSomething() End Interface Public Class ExampleClass
I'm trying to setup a WCF web service to be consumed by JavaScript using JSON and jQuery.I've noticed that you can send JSON without a DataContract if the service method parameters match the naming structure of the JSON object:
I am somewhat new to object oriented programming and am attempting to flatten a Linq object hierarchy by using a shim class.how to initalize a derived class with property values from a base class?I have two objects, a base object with about 100 properties, and a derived object which inherits from the base object and adds a few additional properties beyond those of the base object. My simple constructor creates the derived object, but I am looking for a way to initialize the derived object properties with values from the base object.Right now I am using reflection to iterate over the properties individually and I suspect there may be a better way. The following example shows my shim class constructor for the derived class, and two properties:
newProperty1 - a new string property of the derived class
flattenedProperty2 - a new string property of the derived class, copied from a 2nd-level object of the base class
Code example:
Public Class derivedObj Inherits baseObj Private _newProperty1 As String[code].......
Is this the correct constructor approach to flatten the object hierarchy using a shim class? My second question relates to initialization of properties in the derived class. The constructor above creates the derived object, but what is the best way to initialize the derived object properties with values from the base object? The following code uses reflection to iterate over the properties individually, but I suspect there may be a better way.
Code example:
' property names are in the string array fieldNames
'baseObjQuery is an ienumerable of baseObj
'derivedObjList is a list of derivedObj[code].....
Is there a simple way to initialize values for the properties in the derived object based upon the values of the common properties in the base object?
This is something that has been bugging me for a while as it is easily fixed but not desirable.I have a DataGridView that has 5 columns. The first is called ID.In vb.net the following line gives an error "Object reference not set to an instance of an object": dgvJobs.Columns("ID").Visible = False ' ERROR dgvJobs.Columns(0).Visible = False ' OK
Obviously using the name is much better than a hard coded value to reference the column but wondering if there is anything i can do to get this to work correctly?The datagridview datasource is BindingSource control with the datasource being a dataset.