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”]设置名称
然后将所有者设置为这个新创建的用户
实例。那么我需要为用户类创建构造函数吗?