提问人:Alice 提问时间:3/24/2021 最后编辑:Stan1kAlice 更新时间:3/24/2021 访问量:486
使用构造函数将文件路径传递给方法
Passing a filepath to method using constructor
问:
我是C#和.NET的新手,所以我在传递非直接路径时遇到了一些困难。
我有两种方法可以处理XML文件(添加和读取数据),在那里我直接将文件的路径作为参数(@“D:\GIT\learning\DAL\Users.xml”)传递。
如何使用 ?Constructor
class UserRepository : IUserRepository
{
public void ReadData()
{
List<User> usersList = new List<User>();
Console.WriteLine("Name-Surname-Age");
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"D:\GIT\learning\DAL\Users.xml");
XmlElement xnode = xmlDocument.DocumentElement;
XmlElement elementUser = xmlDocument.CreateElement("user");
XmlElement elementName = xmlDocument.CreateElement("name");
XmlElement elementSurname = xmlDocument.CreateElement("surname");
XmlElement elementAge = xmlDocument.CreateElement("age");
Console.WriteLine("Enter name");
string name = Convert.ToString(Console.ReadLine());
Console.WriteLine("Enter surname");
string surname = Convert.ToString(Console.ReadLine());
Console.WriteLine("Enter age");
string age = Convert.ToString(Console.ReadLine());
XmlText nameText = xmlDocument.CreateTextNode(name);
XmlText surnameText = xmlDocument.CreateTextNode(surname);
XmlText ageText = xmlDocument.CreateTextNode(age);
elementName.AppendChild(nameText);
elementSurname.AppendChild(surnameText);
elementAge.AppendChild(ageText);
elementUser.AppendChild(elementName);
elementUser.AppendChild(elementSurname);
elementUser.AppendChild(elementAge);
xmlDocument.Save(@"D:\GIT\learning\DAL\Users.xml");
}
public void PrintData(User userData)
{
XmlDocument xml = new XmlDocument();
xml.Load(@"D:\GIT\learning\DAL\Users.xml");
List<User> users = new List<User>();
XmlElement xRoot = xml.DocumentElement;
foreach (XmlNode xnode in xRoot)
{
User user = new User();
foreach (XmlNode childnode in xnode.ChildNodes)
{
if (childnode.Name.Equals("name"))
user.Name = childnode.InnerText;
if (childnode.Name.Equals("surname"))
user.Surname = childnode.InnerText;
if (childnode.Name.Equals("age"))
user.Age = childnode.InnerText;
}
}
foreach (User u in users)
{
Console.WriteLine($"Name: {u.Name}, Surname: {u.Surname}, Age: {u.Age}");
}
}
}
答:
2赞
Andrea Scarcella
3/24/2021
#1
为了清楚起见,只剩下相关位
class UserRepository : IUserRepository {
private string _path="";
public UserRepository (string path){
_path=path;
}
}
在这两种方法中,将 _path 作为参数传递给 xmlDocument.Load,例如:
取代
xmlDocument.Load(@"D:\GIT\learning\DAL\Users.xml");
在这两种方法中
xmlDocument.Load(_path);
评论
1赞
Alice
3/24/2021
我能看到它。非常感谢!!
1赞
Stan1k
3/24/2021
#2
示例代码:
class UserRepository : IUserRepository
{
private string XmlFilePath;
public UserRepository(string xmlFilePath)
{
XmlFilePath = xmlFilePath;
}
public void ReadData(string filePath)
{
xmlDocument.Load(filePath);
}
}
在这里,你的类中有一个私有字段,该字段在构造函数中初始化。
从您的类创建新对象时,将设置该值。UserRepository
评论