Преобразование типа из строки в пользовательский тип - PullRequest
3 голосов
/ 21 июля 2010

У меня есть строковый тип, который будет назначен владельцу типа 'User'. Мой метод GetFullName возвращает имя в формате 'string', и мне нужно присвоить его владельцу типа 'User'

def.Owner = uf.GetFullName(row["assignedto"].ToString());

Любые предложения будут полезны,

Ответы [ 4 ]

3 голосов
/ 21 июля 2010

Так что вам нужно что-то вроде:

public class User
{
    ...

    public static implicit operator User(string x)
    {
        return new User(x);
    }
}

Лично я, однако, не фанат неявных преобразований.Вы говорите, что вам «нужно» назначить его таким образом ... что не так с явным конструктором или статическим вызовом метода?Или возможно метод расширения (ToUser) для string?

1 голос
/ 21 июля 2010

Существует решение с оператором преобразования, однако я лично предпочел бы метод статического класса, например User.FromString (string s), который анализирует строку и создает экземпляр User. Таким образом, код будет более читабельным и намного проще для понимания

1 голос
/ 21 июля 2010

@ Ответ Джона будет делать то, что вы хотите, но вы можете посмотреть шаблон репозитория для управления созданием объектов домена. Это решит большую проблему, заключающуюся в том, что код, использующий доменные объекты, не обернется вокруг оси, просто управляя их временем жизни и сериализацией / десериализацией. Пусть хранилище позаботится о таких проблемах и сосредоточится на логике вашего домена.

0 голосов
/ 21 июля 2010

Вы можете перегружать явные / неявные операторы.
Взгляните здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...