0

我有一个没有 get & set Methode 的 CButtonCreate 类。但我想在另一个类即WriteToFile类中使用来自类CButtonCreate的属性“string newFileName”。如何在类 WriteToFile 中使用属性 newFileName?

class CButtonCreate
{
    // Create a Folder && SubFolder from the tbProject
    public void CreateFolder(string MyFolderName, string Mytbs, string MytbRevision, string MyTestSystem)
    {
        // Open the Directory path
        string activeDir = @"Y:\temp";

        //Combine the current active folder with the tbProject
        string newPath = Path.Combine(activeDir, MyFolderName);

        // Create a folder in the active Directory
        Directory.CreateDirectory(newPath);

        // Create a new SubFolder name. This example generates a random string. "tbs"
        string newSubPath = Path.Combine(newPath, Mytbs);

        //Create a new Subfolder under the current active folder
        Directory.CreateDirectory(newSubPath);

        // Create a new file name.
        string newFileName = "Project_" + MyFolderName + "_" + MytbR + ".txt";

        // Combine the new file name with the path
        newPath = System.IO.Path.Combine(newPath, newFileName);

        if (!System.IO.File.Exists(newPath))
        {
            using (System.IO.FileStream fs = System.IO.File.Create(newPath))
            {
               // Call the Function WriteInFile
            }
        }
    }

class WriteToFile
{
    public void WriteInFile(string MyFolderName, string MytextBox, string MytbR, string MycbTest)
    {
        CButtonCreate myFile = new CButtonCreate();
        StreamWriter sw = new StreamWriter(newFileName);
    }
}
4

1 回答 1

0

您的 WriteInFile 方法需要将该newFileName值作为该方法的参数,例如:

class WriteToFile
{
    public void WriteInFile(string newFileName, string MyFolderName, string MytextBox, string MytbR, string MycbTest)
    {
        CButtonCreate myFile = new CButtonCreate();
        StreamWriter sw = new StreamWriter(newFileName);
    }
}

然后,CButtonCreate.CreateFolder你会这样称呼它:

WriteToFile w = new WriteToFile();
w.WriteInFile(newFileName, ...);

或者,如果您愿意,可以将值传递给 WriteToFile 构造函数中的参数,例如:

class WriteToFile
{
    public WriteToFile(string newFileName)
    {
        _newFileName = newFileName;
    }

    private string _newFileName;

    public void WriteInFile(string MyFolderName, string MytextBox, string MytbR, string MycbTest)
    {
        CButtonCreate myFile = new CButtonCreate();
        StreamWriter sw = new StreamWriter(_newFileName);
    }
}

然后,CButtonCreate.CreateFolder你会这样称呼它:

WriteToFile w = new WriteToFile(newFileName);
w.WriteInFile(...);

还有其他方法可以使用属性、将CButtonCreate对象传递给WriteToFile对象或使用静态属性,但我给出的示例中的这两个选项似乎是最有可能和最好的解决方案。

另外,我应该提到您误用了“属性”一词。在 .NET 语言中,属性是一个非常具体的东西,与您所说的完全不同。属性提供了一种使用描述代码的元数据“装饰”代码的方法。例如,有一些属性指示调试器是否跟踪您的方法,或者在调试时跳过它。还有其他属性可以指示编译器如何正确构建您的程序集。例如,属性用于指定程序集的版本号。

我相信您打算使用的术语是“财产”或“领域”。但是,这些术语也都不正确,因为该newFileName变量当前是该CreateFolder方法的局部变量。因此,无法从另一个类外部访问它,甚至无法从同一个类中的另一个方法访问它,因为它的作用域就是那个CreateFolder方法。它仅在执行该方法时存在。一旦该方法结束,该字符串就消失了。如果出于某种原因,您想让整个班级都可以访问它,则需要将其移至班级级别并使其成为班级的字段:

class CButtonCreate
{
    private string newFileName;

    public void CreateFolder(string MyFolderName, string Mytbs, string MytbRevision, string MyTestSystem)
    {
        ...
    }
}

然后,如果你想让其他类可以访问它,你可以为它创建一个公共的 get/set 属性。

于 2012-06-18T12:12:24.483 回答