Похоже, вы не хотите менять статическое поле только для чтения на статическое, потому что это заставит вас изменить инициализацию всех других статических полей только для чтения в вашем классе.
Если это так, к сожалению, вы ничего не можете сделать, но найдите время, чтобы внести изменения. Позволяя установить поле BinDirectory во время выполнения, вы коренным образом меняете последовательность инициализации полей. Ваш код нужно будет адаптировать.
Я думаю, что самый простой способ - это использовать статические свойства только для чтения, которые вычисляют значение на лету.
Например:
public class Values {
public static string BinDir;
public static string OtherDir {
get { return Path.Combine(BinDir,@"Some\Other\Path"); }
}
}