If you want a method that can be used from two different contexts with or without sharing applied, the right approach is to put that method in a separate class that is declared as "inherited sharing", then simply call that method from the classes that are with or without sharing as required. The method will then apply or not sharing rules.
public inherited sharing class WithOrWithoutSharing {
public static void myMethod() {
...
}
}
public with sharing class WithSharing {
public void somethingWithSharing() {
// Will apply sharing
WithOrWithoutSharing.myMethod();
}
}
public without sharing class WithoutSharing {
public void somethingWithoutSharing() {
// Will NOT apply sharing
WithOrWithoutSharing.myMethod();
}
}