Я конвертирую кучу строк в api в классы. Я использую экстенсивно компилятор, чтобы помочь мне в этом, так как я могу заменить некоторые типы в core apis и следовать за ошибками типа.Forbid string & object concatenation
Однако, есть разочарование источником ошибок при таком подходе:
// linqpad snippet
void Main()
{
var t = "yay : " + (new Foo());
t.Dump(); // "yay: namespace.Foo" instead of compilation error
}
class Foo {
}
C# будет счастливо сложить строку и любой определенный пользователем объект. Есть ли способ превратить это в предупреждение или ошибку компиляции?
Я хочу ошибку компиляции, потому что эти данные в конечном счете отображаются пользователю. Если я пропущу одну конкатенацию, пользователи будут видеть имена классов в приложении, что на самом деле не является поведением, которое я хочу.
Нет предупреждения для написания глупого кода! :) – DavidG
Зачем это должно быть предупреждение или ошибка? – Dennis
@DavidG Я занимаюсь рефакторингом. У меня есть 50+ классов, сообщающихся вместе. Я хочу заменить некоторые данные, представленные строкой, на некоторые другие данные, представленные классом. В классах, использующих конкатенацию строк, я хочу использовать другую форму комбинации. Если компилятор мне не помогает, это означает, что я могу что-то пропустить, и пользователи будут видеть в приложении неактуальные имена классов. – Simon