我正在尝试使用IPAddress.Parse解析包含IP地址和端口的字符串.这适用于IPv6地址但不适用于IPv4地址.可以解释为什么会发生这种情况吗?
我正在使用的代码是:
IPAddress.Parse("[::1]:5"); //Valid
IPAddress.Parse("127.0.0.1:5"); //null
Run Code Online (Sandbox Code Playgroud) 我有 2 个不同的同名程序集需要添加到我的项目中。
当我尝试将两个引用添加到项目时,visual studio 告诉我该程序集已被引用(因为已经有一个同名的程序集)。
我尝试重命名其中一个文件。我可以添加两个引用,但是当从重命名的程序集中访问方法时,解析失败(因为 .net 尝试使用原始名称加载程序集)。
注意:程序集不是我的,因此我无法更改它们的内容。
说我有以下代码:
class Parent
{
static string MyField = "ParentField";
public virtual string DoSomething()
{
return MyField;
}
}
class Child : Parent
{
static new string MyField = "ChildField";
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够做到以下两点:
Console.WriteLine(Parent.MyField);
Console.WriteLine(Child.MyField);
Run Code Online (Sandbox Code Playgroud)
这些工作按预期工作,但我也想这样做:
Child c = new Child();
Console.WriteLine(c.DoSomething());
Run Code Online (Sandbox Code Playgroud)
因为没有为Child类定义DoSomething(),所以返回了Parent的MyField,但我想要的是Child的MyField.
所以我的问题是:我有什么方法可以做到这一点?
注意:覆盖Child类中的方法是一个选项,但由于我将从Parent继承许多Child类,并且该方法应该在所有这些中执行相同的操作,因此更改此方法中的某些内容会带来很多麻烦.
标题说明了一切。我见过很多执行相反操作的解决方案,但不是这种方式。
我正在使用 Qt 创建临时文件。如果我知道它的名字,它会是这样的:
QTemporaryFile tempFile;
tempFile.open();
qDebug() << tempFile.fileName();
// C:/Users/USERNA~1/AppData/Local/Temp/qt_temp.Hp4264
Run Code Online (Sandbox Code Playgroud)
我尝试过一些解决方案,例如使用 QFileInfo:
QFileInfo fileInfo(tempFile);
qDebug() << fileInfo.filePath()
Run Code Online (Sandbox Code Playgroud)
和 QDir:
QDir dir(tempFile.fileName());
qDebug() << dir.absolutePath();
Run Code Online (Sandbox Code Playgroud)
没有成功。
有没有纯粹使用 Qt 的解决方案?我知道我可以导航目录树来查找全名,但我试图避免这种情况,特别是因为两个文件夹可能具有相同的前缀。