Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将自定义FileInfo构造函数参数从文件名更改为fileNameOrPath_C#_.net - Fatal编程技术网

C# 将自定义FileInfo构造函数参数从文件名更改为fileNameOrPath

C# 将自定义FileInfo构造函数参数从文件名更改为fileNameOrPath,c#,.net,C#,.net,我正试图通过引用FileInfo和DirectoryInfo密封类来实现一些行为 FileInfo只有一个构造函数。它采用文件名或路径 FileInfo fileInfoOne = new FileInfo("Sample.txt"); FileInfo fileInfoTwo = new FileInfo(@"C:\Test\Sample.txt"); DirectoryInfo只有一个构造函数,它采用path DirectoryInfo directoryInfo = new Direct

我正试图通过引用FileInfo和DirectoryInfo密封类来实现一些行为

FileInfo只有一个构造函数。它采用文件名或路径

FileInfo fileInfoOne = new FileInfo("Sample.txt");
FileInfo fileInfoTwo = new FileInfo(@"C:\Test\Sample.txt");
DirectoryInfo只有一个构造函数,它采用path

DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Test\");
FileInfo和DirectoryInfo构造函数看起来像

public FileInfo(string fileName);
public DirectoryInfo(string path);
在这里,DirectoryInfo接受路径作为字符串,这是有意义的。但是,FileInfo接受文件名作为字符串,我们可以传递名称或路径,这在我看来有点奇怪

我只想改变构造函数如下

 public FileInfo(string fileNameOrPath);    
我是否违反了任何设计规则(从命名转换的角度)

注意:我引用FileInfo和DirectoryInfo只是为了参考。我的问题类似,但并不完全相同

更新:

基本上,我们正在实现TextFileInfo、PdfFileInfo、DocFileInfo等。,。这些文件类型中的每一种在公共属性之上都有自己的属性(基于客户端的要求,如DocFileInfo的“TextLanguage”)。希望保留在与FileInfo类似的基本MasterFileInfo类中的公共属性


最后有什么建议吗

路径和文件名是操作系统的概念,当您说
my.txt
时,它意味着当前文件夹中名为
my.txt
的文件,文件句柄将指向类似
D:\data\temp\my.txt
的内容,其中
D:\data\temp\
是当前文件夹。您还可以将
。\..\my.txt
作为构造函数的路径,这意味着从当前目录向上搜索一个名为
my.txt
的文件,如果当前目录是
D:\data\temp\
,它将转换为
D:\my.txt

还要注意的是

FileInfo fileInfoOne = new FileInfo("Sample.txt");
FileInfo fileInfoTwo = new FileInfo(@"C:\Test\Sample.txt");

将调用.

,但我不同意您指出的
FileInfo
构造函数参数名称/描述没有意义,根据注释,听起来您可以这样做:

public class FileInfoPassthrough // Could this be considered a facade?
{

    /// <summary>
    /// A much more descriptive parameter name for the FileInfo constructor
    /// </summary>
    /// <param name="fileNameOrPath">Either the filename at the relative path of execution, or the full filename and path.</param>
    public FileInfo GetFileInfo(string fileNameOrPath)
    {
         return new FileInfo(fileNameOrPath);
    }
}
公共类文件InfoPassthrough//这是否可以被视为一个门面?
{
/// 
///FileInfo构造函数的更具描述性的参数名
/// 
///相对执行路径处的文件名,或完整文件名和路径。
public FileInfo GetFileInfo(字符串fileNameOrPath)
{
返回新的FileInfo(fileNameOrPath);
}
}
这将允许您拥有一个“更具描述性”的参数名,它只需更新一个
FileInfo
并返回它。您可以使用此方法来代替在不同位置更新
FileInfo


通过这个类更新
FileInfo
对象,从使用者那里抽象出
FileInfo
中构造函数的“坏名字/描述”(假设他们使用这个方法,而不是直接使用
FileInfo
)。

不是文件名或路径,而是完全限定的文件名(包括路径)或相对文件名。阅读
FileInfo
构造函数要调用的第一个操作的描述。我们能看到让您自己的类感到困惑的代码吗?@rajasekhareddy:为什么您需要重写
FileInfo
中的大部分内容?为什么您的类不能简单地保存一个或多个
FileInfo
对象呢?好的,但是如果您所做的只是将
filename或path
传递给
FileInfo
,那么您的参数名现在就更加混乱了。因为正如我之前所说,您总是将文件名传递给
FileInfo
,而从不传递路径。完全限定的文件名(包括路径)本身与路径不同。不确定这是否回答了问题。但我不确定问题到底是什么。