首页 > 解决方案 > 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,我得到了强大的建议!!,再次感谢!!

标签: c#

解决方案


由于它看起来不像您使用的bool是返回的,我建议将返回类型更改为您尝试获取的任何类型并将该类型作为参数删除。例如,改变

public static bool GetString(XmlNode node,string ID,ref string Result)

public static string GetString(XmlNode node, string ID)

并返回解析结果而不是布尔值。


推荐阅读