C# 从字符串到用户定义类型的类型转换

C# 从字符串到用户定义类型的类型转换,c#,type-conversion,C#,Type Conversion,我有一个字符串类型要分配给类型为“User”的所有者。我的方法GetFullName以“string”格式返回名称,我需要将其分配给类型为“User”的所有者 def.Owner = uf.GetFullName(row["assignedto"].ToString()); 任何建议都会很有帮助,因此您需要以下建议: public class User { ... public static implicit operator User(string x) {

我有一个字符串类型要分配给类型为“
User
”的所有者。我的方法
GetFullName
以“
string
”格式返回名称,我需要将其分配给类型为“
User
”的所有者

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

任何建议都会很有帮助,

因此您需要以下建议:

public class User
{
    ...

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

然而,就我个人而言,我并不喜欢隐式转换。你说你“需要”这样分配它。。。显式构造函数或静态方法调用有什么问题?或者,
string

上的扩展方法(
ToUser
)可以重载显式/隐式运算符。

看一看

@Jon的答案可以满足您的要求,但您可能需要了解管理域对象创建的方法。这将解决一个更大的问题,即确保使用域对象的代码不会仅仅管理它们的生命周期和序列化/反序列化而被卷在轴上。让存储库来处理这些问题,并关注您的域逻辑。

有一个使用转换运算符的解决方案,但是,我个人更喜欢像User.FromString这样的静态类方法,它解析字符串并构造用户实例。这样,代码的可读性更高,也更容易理解

为什么不简单地执行类似于
def.Owner=newuser(yourstring)的操作呢?到目前为止,我还没有用户类的构造函数。它是由其他人编写的,因此创建构造函数是唯一的方法?如果您可以为
用户
全名
属性分配一个新值,那么您可以简单地用任何构造函数实例化一个新的
用户
,从
行[“assignedto”]设置名称
然后将
所有者设置为这个新创建的
用户
实例。那么我需要为用户类创建构造函数吗?