我有一个字符串类型要分配给类型为“User
”的所有者。我的方法GetFullName
以“string
”格式返回名称,我需要将其分配给“User
”类型的所有者
def.Owner = uf.GetFullName(row["assignedto"].ToString());
任何建议都会有所帮助,
答案 0 :(得分:3)
所以你需要这样的东西:
public class User
{
...
public static implicit operator User(string x)
{
return new User(x);
}
}
就个人而言,我并不喜欢隐含的转换。你说你“需要”以这种方式分配它...显式构造函数或静态方法调用有什么问题?或可能 ToUser
上的扩展方法(string
)?
答案 1 :(得分:1)
@ Jon的答案会做你想要的,但你可能想查看repository pattern来管理域对象的创建。这将解决更大的问题,即确保使用域对象的代码不会绕过轴,只管理它们的生命周期和序列化/反序列化。让存储库处理这些问题并关注您的域逻辑。
答案 2 :(得分:1)
有一个转换运算符的解决方案,但是,我个人更喜欢像User.FromString(string s)这样的静态类方法,它解析字符串并构造一个User实例。这样,代码更易读,更容易理解
答案 3 :(得分:0)
您可以重载显式/隐式运算符 看看here