Проверка формата строки во время компиляции в C#C#

Место общения программистов C#
Anonymous
Проверка формата строки во время компиляции в C#

Сообщение Anonymous »

В моем коде есть несколько строк, которые используются как ключи для доступа к ресурсам. Эти ключи имеют определенный формат, например

Код: Выделить всё

string key = "ABC123";
В настоящее время все эти ключи хранятся в виде строк, но я хотел бы сделать все более надежным и типобезопасным. В идеале я хотел бы проверить правильность формата строк во время компиляции.

Следующим этапом является создание класса ResourceKey, который инициализируется из строки. Затем я могу проверить формат строки во время выполнения, например

Код: Выделить всё

ResourceKey key = "ABC123";
где ResourceKey определяется как:

Код: Выделить всё

using System.Diagnostics;
using System.Text.RegularExpressions;

class ResourceKey
{
public string Key { get; set; }

public static implicit operator ResourceKey (string s)
{
Debug.Assert(Regex.IsMatch(s, @"^[A-Z]{3}[0-9]{3}$"));
return new ResourceKey () { Key = s };
}
}
Что мне действительно хотелось бы сделать, так это иметь своего рода подтверждение во время компиляции, чтобы программа не могла собраться, если кто-то попытается использовать неверный ключ. например

Код: Выделить всё

ResourceKey k1 = "ABC123"; // compiles
ResourceKey k2 = "DEF456"; // compiles
ResourceKey k3 = "hello world"; // error at compile time
Есть ли какой-нибудь способ добиться этого?

Спасибо

Подробнее здесь: https://stackoverflow.com/questions/506 ... in-c-sharp

Вернуться в «C#»