好的,你是正确的,我没有很好地解释它。
我有客户端应用程序和服务器WCF服务。为了将所有数据从客户端传输到服务器,我有1个服务器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 } });
}
总是通过该类型的“ ClientMethod”调用方法“ Execute”。
A a = new A();
ClientMethod(a);
B b = new B();
ClientMethod(b);
这篇文章的重点是,为什么方法“ Execute”中的行返回“ namespace.A”或“ namespace.B”?为什么不总是返回“ namespace.A”?我从只希望“ A”的方法“ ClientMethod”调用它。
希望现在对您来说会更清楚。
最诚挚的问候,托马斯。
答案 0 :(得分:2)
为什么第二次使用返回“ B”而不是“ A”? “ AnotherMethod”应为“ A”。该方法在两个示例中都可以返回“ A”吗?
是的,当然有:
public string AnotherMethod(A parameter)
{
return typeof(A).FullName;
}
但这带来了一些问题:
GetAssemblyName
的方法?A
的全名,为什么甚至需要parameter
?为什么您甚至需要一种方法? typeof(A)
很好。