【发布时间】:2011-09-30 21:07:10
【问题描述】:
我正在使用其他人的代码并尝试进行一些修改。所以我需要做的是采取以下措施:
RemoteFileDP remoteFile = new DPFactory().CreateRemoteFileDP(configData);
并更改它,以便 remoteFile 可以等于字符串变量中的内容。为了进一步解释,让我提供更多代码:
ConfigDP configData = new ConfigDP();
所以上面的语句在remoteFile语句之前执行,并且ConfigDP上面有两个类(abstract Config,然后是它的base:abstract ConfigBase)。 DP 也是它上面的两个抽象类(抽象 RemoteFile 和抽象 RemoteFileBase)的子类。
据我了解,remoteFile 是从数据库查询中提取的数据的结果,存储到列表或哈希表中(抱歉,只是一个实习生,所以我正在处理这个问题)。
我需要 remoteFile 来接受字符串值的原因是因为有许多方法可以利用 remoteFile 中的信息,我想避免创建一个接受字符串值而不是 RemoteFileDP remoteFile 的全部重载方法。
所以如果我可以取一个字符串值,比如:
string locationDirectory;
它是从另一个方法传入的,然后有类似下面的东西:
RemoteFileDP remoteFile = locationDirectory;
那么使用remoteFile 的所有其他方法将不必重载或更改。
抱歉所有细节,但这是我第一次发帖,所以我希望我提供了足够的信息。我确实查看了C# Convert dynamic string to existing Class 和C#: Instantiate an object with a runtime-determined type 并编写了以下代码:
RemoteFilesDP remoteFile = (RemoteFileDP)Activator.CreateInstance(typeof(RemoteFileDP), locationDirectory);
但是我不断收到“MissingMethodException”错误,即找不到 RemoteFileDP 的构造函数,但我确实有如下所示的构造函数:
public RemoteFileDP()
{
} //end of RemoteFilePlattsDP constructor
提前感谢您的帮助!
【问题讨论】:
-
也许这有帮助? stackoverflow.com/questions/208777/…这些你试过了吗?
-
感谢您的回复。我现在就去看看!
-
打开链接后,我看到这是我发布问题后一直在审查的链接。我试过FormatterServices.GetUninitializedObject,但它对我不起作用。表示没有接受两个参数的重载。
-
奇怪,它在哪里说的?编译器错误,运行时错误?具体在哪里?
-
@ can poyrazoğlu: 它在编译时给出错误。这是我使用的代码:'RemoteFileDP remoteFile = (RemoteFileDP)FormatterServices.GetUninitializedObject(typeof(RemoteFileDP), locationDirectory);'