相关疑难解决方法(0)

WCF反序列化如何在不调用构造函数的情况下实例化对象?

WCF反序列化有一些神奇之处.如何在不调用其构造函数的情况下实例化数据协定类型的实例?

例如,考虑这个数据合同:

[DataContract]
public sealed class CreateMe
{
   [DataMember] private readonly string _name;
   [DataMember] private readonly int _age;
   private readonly bool _wasConstructorCalled;

   public CreateMe()
   {
      _wasConstructorCalled = true;
   }

   // ... other members here
}
Run Code Online (Sandbox Code Playgroud)

通过DataContractSerializer您获取此对象的实例时,您将看到该字段_wasConstructorCalledfalse.

那么,WCF如何做到这一点?这是其他人可以使用的技术,还是隐藏在我们之外?

.net c# reflection wcf serialization

78
推荐指数
2
解决办法
2万
查看次数

使用反射在内部类中使用参数实例化构造函数

我有类似的东西:

object[] parameter = new object[1];
parameter[0] = x;
object instantiatedType =
Activator.CreateInstance(typeToInstantiate, parameter);
Run Code Online (Sandbox Code Playgroud)

internal class xxx : ICompare<Type>
{
    private object[] x;

    # region Constructors

    internal xxx(object[] x)
    {
        this.x = x;
    }

    internal xxx()
    {
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

我得到:

抛出异常:System.MissingMethodException:找不到类型为"xxxx.xxx"的构造函数..

有任何想法吗?

c# reflection

51
推荐指数
3
解决办法
3万
查看次数

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

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

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)

提前感谢您的帮助!

c# string class

5
推荐指数
1
解决办法
9302
查看次数

标签 统计

c# ×3

reflection ×2

.net ×1

class ×1

serialization ×1

string ×1

wcf ×1