c# - Class property Can't ref In myFunction,有什么更好的做法
问题描述
我有一些 XML 数据需要像转换项目一样
public class MyItem
{
public string Name{get;set;}
public int? Age{get;set;}
}
我编写了转换函数以在我的项目中使用(不在同一个 .cs 中)
public static bool GetString(XmlNode node,string ID,ref string Result)
{
bool bl = false;
string Value;
if (GetXMLData(node,ID,out Value) && !String.IsNullOrEmpty(Value) )
{
bl = true;
Result = Value;
}
else
{
bl = false;
}
return bl;
}
public static bool GetInt(XmlNode node, string ID, ref int? Result)
{
bool bl = false;
string Value;
if (GetXMLData(node, ID, out Value) && !String.IsNullOrEmpty(Value))
{
bl = true;
Result = Int32.Parse(Value);
}
else
{
bl = false;
}
return bl;
}
我想使用类似的功能
XMLNode Node = XMLDocument.SelectSingleNode("Data");
MyItem item = new MyItem();
GetString(Node,"Name",ref item.Name);
GetString(Node,"Age",ref item.Age);
但是编译器显示错误...
A property or indexer may not be passed as an out or ref parameter
有没有更好的做法可以告诉我?
感谢
谢谢大家!!问题已经解决了!!我接受了这个建议,它真的对我有帮助
GetString(node, "fieldValue", x => Item.sub = x);
我想分享我的情况 我的老师让我带领一个小团队创建 Web 我们使用 XML 来发布数据和插入数据库并且 Cols 需要区分 NULL 和 String.Empty
一些队友编写此代码以将 XML 读取到项目
Item.Name = node.Attributes["Name"].value;
一些队友是
if(node.Attributes["Name"] != null)
{
Item.Name = node.Attributes["Name"].value;
}
这两个代码一会导致 nullreferenceexception 一会插入 String.Empty 到数据库,但是我想插入 null col 数据...所以我需要写函数让队友使用来防止任何异常...
谢谢大家的建议,我是第一次使用Stackoverflow,我得到了强大的建议!!,再次感谢!!
解决方案
由于它看起来不像您使用的bool
是返回的,我建议将返回类型更改为您尝试获取的任何类型并将该类型作为参数删除。例如,改变
public static bool GetString(XmlNode node,string ID,ref string Result)
至
public static string GetString(XmlNode node, string ID)
并返回解析结果而不是布尔值。
推荐阅读
- macos - Jekyll 在 Mac 上服务 - 加载缓慢
- javascript - React:从子组件记录父组件的状态会产生不同的结果
- reactjs - 如何通过在 React 中单击按钮打开 Bootstrap 模式
- vb.net - 在 Task.Run 中调用异步函数
- sql - 通过旧的基于递归的 SQL 存储过程脚本进行调试
- c# - AdaptiveCards 在 .NET 解析期间引发异常
- php - 如何从functions.php获取变量到页面
- flutter - 如果文件为空,则无法登录
- python - Django REST Framework:如果路由有前缀,如何使索引路由可浏览?
- iso - ISOBUS 过程数据报文