【问题标题】:Generic type vs dynamic vs object通用类型 vs 动态 vs 对象
【发布时间】:2015-11-26 14:32:45
【问题描述】:

我想让我的方法的返回类型通用。调用者将决定它应该期待哪种类型。

实际上,我的方法将是接口的成员,实现它的类将有一个决策块将工作委托给其他方法。

因此我想将接口方法的返回类型设为泛型。

我可以通过使用动态或对象关键字或 c# 泛型类型来实现这一点。

我无法弄清楚实现它的最佳选择是什么,以及每种类型的限制和优势是什么。

 public interface ICoreWrapper
 {
    Response<T> ExecuteDeviceCommand<T>(DeviceCommand deviceCommand, object param = null);

 }

请给我建议。

提前致谢。

【问题讨论】:

    标签: c#-4.0 dynamic


    【解决方案1】:

    如果您在编译时不知道类型,您可以使用动态,但它们会更慢,因为它们使用运行时调用并且不太安全,因为如果类型没有实现您尝试调用的方法,您将得到一个运行时错误。

    使用动态返回类型,根据输入类型返回相应的对象。

    【讨论】:

    • @Nambiranjan S 我使用泛型解决了这个问题,但我想知道这是一个好方法还是使用动态更好。如果是这样,这背后的原因是什么?
    • 如果您在编译时就知道类型,请始终使用泛型,这是一个好方法。 see here
    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2013-07-05
    • 2016-03-30
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多