Best way for wait to work with C# in Appium Framework

The way I am currently doing it is not really helpful but I think would only need a few changes to work properly I cant figure those out. Expected Condition as its obsolete except for very old Nugget code. The Id part will not always be the same so in the tests I write: WaitForElementVisible(SiteElementsbyInfo.LoggingIn(), 3);
The Wait does not seem to wait and the 3 does not work only the one from below base code appears to work.
Then I use the below as base code
private void WaitForElementVisible(By by, int timeOutInSeconds)
Stopwatch stopwatch = new Stopwatch();
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(1));

                var element = wait.Until(c => c.FindElement(By.Id("content-section")));
            catch (Exception)
                Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed.Seconds);