方法中的程序集名称返回继承的类名



好吧,你说得对,我没有很好地解释。

我有客户端应用程序和服务器WCF服务。为了将所有数据从客户端传输到服务器,我有一个服务器API。API期望字典用于传递参数。当我传递int,string。。。进展顺利。但我不能在课堂上做同样的事情。因此,我在客户端使用该类的序列化,在服务器类上使用反序列化。对于反序列化,我需要知道服务器端的类的类型。所以我把参数"AssemblyFullName"放在BaseClass上。我的所有类都继承自BaseClass。

对于与服务器的通信,我有1种方法。每个通信都会抛出这个方法。

internal static void Execute(Dictionary<string, object> parameters)
{
//finding type of object in parameters
foreach (KeyValuePair<string, object> keyValuePair in parameters)
{
// problem row
string fullName = keyValuePair.Value.GetType().FullName;
}
// rutine for comunication with server
}

我的模型看起来是这样的,它包含在服务器端和客户端。

public class BaseClass
{
private string AssemblyFullName { get; set; }
}
public class A : BaseClass
{
}
public class B : A
{
}

客户端的一个方法期望"A"并与服务器通信。

public void ClientMethod(A expectedClass)
{
Execute(new Dictionary<string, object>() { { "identifierOfClassA", expectedClass } });
}

方法"Execute"的调用始终通过该类型中的"ClientMethod"。

A a = new A();
ClientMethod(a);
B b = new B();
ClientMethod(b);

这篇文章的重点是,为什么方法"Execute"中的行返回"namespace.A"或"namespace.B"?为什么不总是返回"namespace.A"?我从只需要"A"的方法"ClientMethod"调用它。

希望你现在能更清楚。

向托马斯致以最良好的问候。

为什么第二次使用返回"B"而不是"A"?"AnotherMethod"应为"A"。这个方法在两个例子中都能返回"A"吗?

是的,当然有:

public string AnotherMethod(A parameter)
{
return typeof(A).FullName;
}

但这带来了一些问题:

  1. 当您返回类型的全名时,方法为什么命名为GetAssemblyName
  2. 如果你总是想返回A的全名,为什么你甚至需要parameter?为什么你甚至需要一种方法?typeof(A)做得很好
  3. 如果你正在尝试其他事情,请让问题更清楚。就目前情况来看,它令人困惑

最新更新