Я только что посмотрел, сделать класс структурой на самом деле не вариант, так как он имеет некоторую логику в конструкторе без параметров, плюс он наследует абстрактный класс, который содержит внутренние абстрактные функции.
Я не могу использовать интерфейс, так как это сделало бы эти функции общедоступными, что полностью нарушило бы логику.
Я могу опубликовать весь класс, если это будет полезно, но это несколько длинно (130 строк)
Или я мог бы бросить на отдельном сервере, если бы это было лучше? (хотя это вредит целостности этого вопроса, поскольку я могу в конечном итоге удалить его с этого сервера)
Также очень сложно объяснить класс без написания полного эссе: - /
В любом случае, я попытаюсь проиллюстрировать мою проблему.
Предположим, 2 класса таблиц: CustomerTable и UserTable:
public class CustomerTable
{
Wrapper<string> Name;
}
public class UserTable
{
Wrapper<string> Name;
}
Теперь проблема в том, что какой-то другой разработчик может использовать приведенный выше код следующим образом:
CustomerTable customer = new CustomerTable();
UserTable user = new UserTable();
user.Name = customer.Name; // This breaks my internal dictionary
Что должен был сделать разработчик, чтобы он работал, было:
user.Name = (string)customer.Name;
Однако проблема в том, кто в здравом уме подумает об этом при написании кода?
Даже если бы я использовал свойство Value, разработчику все равно пришлось бы не забывать писать
user.Name = customer.Name.Value; // or user.Name.Value = ....
И снова разработчик может забыть об этом, и внезапно он получает исключения или, что еще хуже: данные, которые не сохраняются в базе данных.
Так что моя проблема в том, что я хочу, чтобы обертка была полностью прозрачной (она должна использоваться, как если бы она была на самом деле классом / примитивом, который она оборачивает).
Однако при назначении из одной оболочки другой внутренняя логика ломается.
Фух много написания и много кода - дайте мне знать, если я переусердствовал написание.