C# - 将字符串转换为类对象

Inv*_*ige 5 c# string class

我正在使用别人的代码并尝试进行一些修改。所以我需要做的是采取以下措施:

RemoteFileDP remoteFile = new DPFactory().CreateRemoteFileDP(configData);
Run Code Online (Sandbox Code Playgroud)

并更改它,以便 RemoteFile 可以等于字符串变量中的内容。为了进一步解释,让我给出更多代码:

ConfigDP configData = new ConfigDP();
Run Code Online (Sandbox Code Playgroud)

因此上面的语句在remoteFile语句之前执行,并且ConfigDP上面有两个类(抽象Config和它的基类:抽象ConfigBase)。DP 也是它上面的两个抽象类(抽象 RemoteFile 和抽象 RemoteFileBase)的子类。

根据我的理解,remoteFile 是从数据库查询中提取数据的结果,存储到列表或哈希表中(对不起,只是一个实习生,所以我正在解决这个问题)。

我需要remoteFile接受字符串值的原因是因为有许多方法利用remoteFile中的信息,并且我希望避免必须创建一大堆接受字符串值而不是RemoteFileDP remoteFile的重载方法。

因此,如果我可以采用如下字符串值:

string locationDirectory;
Run Code Online (Sandbox Code Playgroud)

它是从另一个方法传入的,然后具有类似于以下内容的内容:

RemoteFileDP remoteFile = locationDirectory;
Run Code Online (Sandbox Code Playgroud)

那么使用remoteFile 的所有其他方法将不必重载或更改。

抱歉所有细节,但这是我第一次发帖,所以我希望我提供了足够的信息。我确实查看了C# 将动态字符串转换为现有类C#:使用运行时确定的类型实例化对象并编写了以下代码:

RemoteFilesDP remoteFile = (RemoteFileDP)Activator.CreateInstance(typeof(RemoteFileDP), locationDirectory);
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到“MissingMethodException”错误,表示找不到 RemoteFileDP 的构造函数,但我确实有构造函数,如下所示:

public RemoteFileDP()
    {
    } //end of RemoteFilePlattsDP constructor
Run Code Online (Sandbox Code Playgroud)

提前感谢您的帮助!

Ada*_*ear 1

您缺少一个以 astring作为参数的构造函数。尝试你的代码

public RemoteFileDP(string locationDirectory)
{
    // do stuff with locationDirectory to initialize RemoteFileDP appropriately
}
Run Code Online (Sandbox Code Playgroud)

当然,如果这样做的话,为什么不直接调用构造函数呢?

RemoteFileDP remoteFile = new RemoteFileDP(locationDirectory);
Run Code Online (Sandbox Code Playgroud)