As long as the accessors are set appropriately, static methods are more or less shared anyway (in fact, they use the keyword Shared in VB); it makes no difference what class they are in because they are disconnected from any instantiated object.
To call a static method, you preface it with the name of the class on which it is declared:
MyClass.MyUtilityMethod();
The accessor must be public
or it can be internal
if the caller and method are in the same project/assembly.
If your goal is merely to create a single point of access for the static methods, you create a class that forwards the calls as appropriate:
public static class SharedMethods
{
public static void SharedMethod1()
{
ClassA.SharedMethod1();
}
public static string GetName()
{
return NameProvider.GetName();
}
public static int GetCount()
{
return CountClass.GetCount();
}
}
This way you can access everything through SharedMethods.GetName()
etc.