我正在使用 wcf 接收对象,每个对象都是不同的,我不想为每个接收到的对象创建一个对象以便我可以操作它,每次将每个接收到的对象传递/复制到一个无形对象。有这种东西吗?
伪代码示例:
Shapeless_object = received_obj_A;
if (Shapeless_object.name = "I_dont_know") {
Shapeless_object.count++;
}
Shapeless_object = received_obj_B;
if (Shapeless_object.name = "I_dont_know_too") {
Shapeless_object.count--;
Shapeless_object.age = 20;
}
received_obj_A和B不同,参数不同 但传入了一个对象。我希望我的问题尽可能清楚。
最佳答案
您提到了 WCF 的起源:通过 partial class
向 WCF 类型添加接口(interface)很容易:只需声明通用接口(interface) - 也许:
interface ICommon {
string name {get;}
// ...
}
然后告诉编译器为每个 WCF 类型推断接口(interface):
namespace TheWcfNamespace {
partial class SomeWcfType : ICommon {}
partial class AnotherWcfType : ICommon {}
partial class WhateverWcfType : ICommon {}
}
只要 SomeWcfType
等所有具有实现接口(interface)的成员,您现在就可以将所有 WCF 对象视为 ICommon
。
或者,您可以通过 dynamic
在这里做您想做的事 - 只需将 Shapeless_object
替换为 dynamic
- 然而,这似乎是一个滥用的意图。这里更经典的实现是接口(interface):
if(obj is IDontKnow) {
// TODO: access as an IDontKnow
}
if (obj is IDontKnowToo) {
// TODO: access as an IDontKnowToo
}
您当然可以将其与上面提到的部分类
方法结合起来。
关于c# - c# 中的 "Shapeless"对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29406856/