我正在寫一些顯式運算符來將數據庫模型類型轉換爲我的域模型。像這樣(簡化的例子):應該顯式運算符在c#中返回null嗎?
public static explicit operator DomainModel.Role(Role roleEntity)
{
DomainModel.Role role = new DomainModel.Role
{
RoleId = roleEntity.RoleId,
Name = roleEntity.Name
};
return role;
}
然而,它有可能是roleEntity
參數爲null。大多數時候在.net框架中顯式強制轉換null實例會導致異常。像這樣:
user.Role = (DomainModel.Role)_userRepository.GetRole(user); // Would normally results in a NullReferenceException
但如果明確運營商將進行調整,如預期上述將發揮作用:
public static explicit operator DomainModel.Role(Role roleEntity)
{
DomainModel.Role role = roleEntity == null ? null : new DomainModel.Role
{
RoleId = roleEntity.RoleId,
Name = roleEntity.Name
};
return role;
}
問:
- 它是合乎邏輯的創造這樣明確的運營商?
我會認真考慮寫一個名字空間前綴的第二個角色。 –