gpt4 book ai didi

c# - c# 中的 "Shapeless"对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:56 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com