C#学习教程:C#-将字符串转换为类对象所以我需要做的是采取以下措施:RemoteFileDPremoteFile=newDPFactory().CreateRemoteFileDP(configData);并更改它,使remoteFile可以等于字符串变量中的内容。为了进一步解释,让我再给出一些代码:ConfigDPconfigData=newConfigDP();所以上面的语句是在remoteFile语句之前执行的,ConfigDP在它上面有两个类(abstractConfig,然后是它的base:abstractConfigBase)。DP也是它上面的两个抽象类(抽象RemoteFile和抽象RemoteFileBase)的后代。据我了解,remoteFile是从数据库查询中提取的数据的结果,存储在列表或哈希表中(对不起,我只是个实习生,所以我正在研究这个)。我需要remoteFile接受字符串值的原因是因为有许多方法利用remoteFile中的信息,我想避免创建一大堆接受字符串值而不是RemoteFileDPremoteFile的重载方法。因此,如果我可以采用如下字符串值:stringlocationDirectory;从另一个方法传入,然后有类似的东西:RemoteFileDPremoteFile=locationDirectory;那么不必重载或更改所有其他使用remoteFile的方法。抱歉所有细节,但这是我第一次发帖,所以我希望我已经提供了足够的信息。我确实看过C#ConvertDynamicStringtoExistingClass和C#:Instantiateanobjectwithatypedeterminedatruntime并编写了以下代码:RemoteFilesDPremoteFile=(RemoteFileDP)Activator.CreateInstance(typeof(RemoteFileDP),locationDirectory);但我一直收到“MissingMethodException”错误并且找不到RemoteFileDP的构造函数,但我确实有一个看起来像这样的构造函数:您缺少一个将字符串作为参数的构造函数。试试你的代码。publicRemoteFileDP(stringlocationDirectory){//用locationDirectory做一些事情来适当地初始化RemoteFileDP}当然,如果你这样做,为什么不直接调用构造函数呢?RemoteFileDPremoteFile=newRemoteFileDP(locationDirectory);如果你不想(或不能)修改RemoteFileDP所在的源项目,你可以写一个这样的扩展方法:publicstaticRemoteFileDPConvertToRemoteFileDP(thisstringlocation){//用你的//位置字符串并返回它}这样你就可以运行你想要的代码行:RemoteFileDPremoteFile=locationDirectory;稍微修改如下:RemoteFileDPremoteFile=locationDirectory.ConvertToRemoteFileDP();这会给你解决方案吗?虽然我喜欢构造函数接受更多字符串的想法,但您可以在RemoteFileDP和字符串之间定义隐式或显式转换运算符:适当地初始化RemoteFileDP对象。//你可以通过以下方式将此解决方案与Anna的解决方案混合使用:returnnewRemoteFileDP(locationDictionary);这样你实际上可以写:RemoteFileDPr表情文件=位置目录;或者,如果转换运算符是显式的:RemoteFileDPremoteFile=(RemoteFileDP)locationDirectory;我仍然坚持AnnaLear的解决方案更好,因为隐式或显式转换似乎并不适合这种情况。例如,如果由于无效的locationDictionary值导致转换失败,那么我不会推荐这条路线。如果无论locationDictionary是什么(禁止为null),转换总是成功,那么它可能是您问题的有效解决方案。我只是把它放在桌面上,因为我认为您可能会发现了解C#中的显式和隐式转换很有用,如果您还没有的话。以上就是C#学习教程:C#-Convertingastringtoaclassobject所有内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
