I have large group of functions that I would like to store in basically a library and simply call the functions from the controls on my forms. Back in VB 6 I would have done this with a module, but now I have been told that a Public Class is the correct way in .NET. How should I go about doing this?
I would like to understand the Pro & Cons in using the commonly used methods via Singleton class against Shared (Static) members of a class in VB.Net. It could be in terms Time, Space complexity or best practices. I have a BankAccount class with methods doing some business logic.
I've got a BaseDataClass with shared fields and functions
CODE:
I have several classes that derive from this base class. The derived classes have all Shared functions that can be called directly from the BLL with no instantiation. The functions in these derived classes call the base Init(), call their specific stored procs, call the base CleanAll() and then return the results.
So if I have 5 derived classes with 10 functions each, totaling 50 possible function calls, since they are all Shared, the CLR only calls one at a time, right? All calls are queued to wait until each Shared function completes.
Is there a better design with having Shared functions in your DAL and still have base class functions? Or since I have a base class, is it better to move towards instance methods within the DAL?
I am trying to get a handle on SyncLock and multithreading, but I am having some trouble wrapping my head around exactly how it should be implemented. I have a Public Class Utilities with a many Shared Functions. I want to make sure that each function can only be executed when there are no other concurrent calls to the same function. So If I have 2 functions, A and B in a Public Class Utilities, what is the syntax so that a function "locks" while it is being executed, preventing any subsequent calls until the "locking" thread has completed?
CODE
Public Class Utilities
Public Shared Function A (ByRef i As Integer) As Integer
[CODE].............................
I know I need to wrap the statements of execution in a SyncLock block, but I am unsure of the scope of the parameter used with SyncLock...is it private to the function, class, etc? Can the same object be used to lock both functions if they are independent?
making a general functions class library that will be used in several applications and asp pages, sometimes running at the same time.I've looked at a lot of samples on the web and they all show you to create an instance of the classlibrary namespace or the classlibrary class.
IE. dim obj2 as new mycompany.mynamespace.myclass dim n2 as integer n2 = obj2.somefunction(...)
What I did was create my class library and put a class in it and declared a function as sharred, then created my dll.I don't have to create an instance of it and I can use it like the net framework by just coding
The net framework does this, I mean once I imports it I don't have to make an instance of it in every function.All the samples I've seen about class libraries do not use the shared keyword.
I am just testing how to use dll and after googling a lot, I made it work partially...Created new project Class Library, named it myFirstDll and made a Public Shared Sub helloDll to do something. Now since this is my first time, the dll is simply showing the input in a msgbox:
Public Shared Sub helloDll(ByVal msg As String)
If msg <> "" Then MsgBox(msg, MsgBoxStyle.OkOnly, "WE HAVE SOME MSG") Else MsgBox(msg, MsgBoxStyle.OkOnly, "NO MSG") End If
End Sub
After building the dll-file, I started a new project using normal windows forms, named it "useMyDll", I clicked Project -> Add Reference, and added my dll. The program file that I made needed a textbox and a button for using the dll:
Private Sub useDllButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles useDllButton1.Click Dim msg As String = Nothing msg = TextBox1.Text myFirstDll.myFirstDLL.helloDll(msg) 'this will be in msgbox in dll-file End Sub
And when running this I could write something in the textbox and a msgbox with that input would pop up. Really happy with that. My first attempt to make a dll and use it was very successful. Then I thought, what about running the dll from rundll32.exe? It would be handy to make a dll that could be run without my exe. After googling a long time, I tried to add a new button:
Private Sub useDllButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles useDllButton2.Click 'Now let us see if we can open it using rundll32.exe ? Dim msg As String = Nothing msg = TextBox1.Text
[CODE]...
Now the first button still works just fine, but the second button gives some error (translated to english would be) like "missing entry: helloDll" I also tried to open with command prompt, same result.
After googling again I read one place that you can't run a visual basic dll with rundll32.exe, so is this true? Or is there some way of doing it? I read one place that it works if you make the dll be "COM-Visible", but I don't really understand how to or what it means. I tried to open properties, clicked Assembly Information, and "Make assembly COM-Visible", but this doesn't change anything. Then I read somewhere that it has to be in a module to work. Could it be that I need to rewrite some codes and it would work, or would I have to start learning c++ in order to accomplish this?
Namespace MyClassLib Public Class MainClass Public Sub New()
[CODE]...
Is it possible to make it so that the user using the Class Library has to declare a new Instance of MainClass() before using Subs/Functions in Class2 or Class3?
I am trying to add shared members in derived classes and use that values in base classes...
I have base
class DBLayer public shared function GetDetail(byval UIN as integer) dim StrSql = string.format("select * from {0} where uin = {1}", tablename, uin) end function end class
[Code]..
currently there is error using the tablename variable of derived class in base class but i want to use it i dun know other techniques if other solutions are better then u can post it or u can say how can i make it work? confused...
I'm looking at a VB.NET class (that I didn't write) that is declared "MustInherit" (abstract in C#, I believe) that has three methods, all of which are defined as "shared" (static in C#). There are no properties or fields in the class - only the three methods. From an OO perspective, does this make any sense?
My thinking is no, because by making it MustInherit, you're essentially saying you can't create an instance of this class - you must inherit from it and create an instance of the derived class. But since all the methods are shared, you'll never actually create an instance of the parent class anyway, so the "MustInherit" does no good. You might as well not mark it MustInherit and just inherit from it whenever you want.
I am working with VB.Net and am kinda new. I was wondering, if my asp.net project has a lot of shared functions, can I put them all into one Namespace? Do I have to put them into a class?
I was wondering how to implement a vb script file with functions and subs that can be used in all code pages of a project. Similar to the old VB 6 bas files.
I've created a global sqlConnection in my app and it works fine for sharing the connection between functions. I have also defined a global sqlTransaction that I'd like to share between functions also, so I don't have to pass it around during a complex update but it's not working as I hoped.
Module Master Public sqlConnString As String Public SQL As String
I have a Visual Basic Class Library project. It generates a DLL. Is there a method to generate a static .LIB to which I can do a static link?Alternatively, can I do a static link against a DLL?
I get this error: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
Partial Class _Default Inherits System.Web.UI.Page <WebMethod()> _
[Code]....
I know it has something to do with the fact that the first function is shared and the second function should probably be Public as well but I don't fully understand the reason behind it. Probably not relevant but I'm calling the web method from some javascript.
I have an asp.net web app. It has a shared class, and I want to have the connection string the same through out the site. My string is in my web config, but I don't want to type this all over the place:
Is it considered an acceptable practice to use Modules instead of Classes with Shared member functions in VB.Net?I tend to avoid Modules, because they feel like left over remains from VB6 and don't really seem to fit in anymore. On the other hand, there doesn't seem to be much difference between using a Module and a Class with only Shared members.
I am porting an app from VB6 and I run into problems with references to functions and subs. Basically, let's say I have 2 classes added to the project, like this.
Public Class OOOOO Public Shared Sub BBBBBBB(ByVal FileName As String) ... Call CCCCCC() Call DDDDDD() etc. ... End Sub [Code] .....
I had to make the BBBB() shared to be able to call it from another function AAAAAA() from another class PPPPP. However, I get error on the references in the BBBBB(), that CCCC() and DDDD() have to be made also shared (so instead of 1 error I got number of errors). When I tried to make them shared as well, I got tens and tens of errors due to other references of both variables and functions.
VB.net newbie question: I am writing a number of console applications, all of which need to use a set of common functions and subroutines that are compiled directly into the applications, not into a separate DLL.
I assume that each separate console application needs to be a separate project, and that the commonly used functions and subroutines need to be in a separate module, but how can such a module be shared between multiple projects so that only one copy of the shared module and its code is required, without creating a separate DLL?
Well I am a new to VB.NET, converting a legacy system to .NET world. Recently I have been reviewing the already existing code since I joined the project quite late in the team. I find that there are many shared functions (not shared class) inside many classes. I doubt this may create some problem if two requests ( i.e two different HTTP request to the same method as it's a WCF application, of course exposed methods are not shared but internally called methods are shared) comes to the same shared method and both the calls to the method may have different method parameters/arguments, overwriting each other's arguments. In short, if shared method has a list of arguments which is going to be processed, is there any chance of inconsistencies in the light of multiple access to the shared method via two http requests.
give me a good resource that explains the difference between a Private, Public, Shared Functions/Sub/Variables? I normally use Public for Subs/Functions inside of Modules I call from other parts of the program. But I'd like to get more of an understanding of how and when to use them. I want as little as impact to a system that is running my programs as possible, so i guess the key here is I'm trying to just get more proficient in my coding.
I am currently working on a project witch contains lots of functions and properties. These functions and properties are stored in the dll. If I reference to this from within my project, these functions and properties are all in the same namespace or class. (I don;t know how it is called)Example:If I type the root namespace: Functions. I get all the functions. I would like to organize them in:
Functions.Maths (All the functions involving maths) Functions.Internet (All the functions involving the internet) Functions.Language (All the functions involving languages)
I tried using classes but I cant access the properties when they are stored in a class. I don't know why.
If I have two threads both calling a normal function at the same that appends strings, sometime the output string is a combination from both threads as the function had not finished executing the code before it was called again... Would a shared function wait to finish first?
I seem to be drawing a blank. I'd like to create a "shared" variable that is shared with all instances of a class but not classes that inherit from it. For example.Class A: Shared list As New List(Of String): list.Add("A")
Class B Inherits A: list.Add("B")Class C Inherits B: list.Add("C")The end result I'd like is that any instance of A has just A in the list. Any instance of B has A and B in the list. Any instance of C has A, B, and C in the list. I can accomplish it by creating Instance variables, but I have to construct the list for each instance of a class. I'd like to construct it once for a specific point in the Hierarchy and then share it accross other instances of that class.
This is another one of my "I think it's not possible but I need confirmation" questions.I have a base class for a bunch of child classes. Right now, this base class has a few common properties the children use, like Name. The base is an abstract class (MustInherit)Technically, this means that everytime a child class is instantiated, it lugs around, in memory, its own copy of Name. The thing is, Name is going to be a fixed value for all instances of a given child. I.e., Child1.Name will return "child_object1", and Child2.Name will return "child_object2".
I need to create unit testing project for my current website. The currentw ebsite si written in VB. All unit testing examples are using interface to create mock object. My current VB class does not implment any interface. Can I add interface and implement it to my current class and functions without affecting or changing codes to any pages in my website that call the functions? For examples my current class is like: