gpt4 book ai didi

c# - 将类型传递给未知的类库泛型方法 - 为什么它有效

转载 作者:行者123 更新时间:2023-11-30 12:13:37 26 4
gpt4 key购买 nike

我正在开发一个包含大量可重用程序集的 C# .NET 解决方案。其中三个是:

  • WinForms 程序集
  • 一个网络客户端类库
  • 包含数据模型类的程序集

我在类库中有一个通用方法:

namespace Company.WebClient {
public class GetData<T>()
{
...
}
}

但是,当我从 WinForms 程序集中调用该方法时,我传入了类库不知道的类型,因为它包含在数据模型程序集中:

namespace Company.WinFormsApp {
public class App
{
public void Main()
{
Company.WebClient.GetData<TypeFromTheDataModel>();
}
}
}

令人惊讶的是,它似乎有效。但它为什么有效? webclient 程序集没有对数据模型程序集的硬编码引用,所以我很惊讶它没有报告“找不到类型”或类似的错误。这是一种安全的工作方式,还是我应该向我的项目添加更多引用(即从类库到数据模型)?

最佳答案

库不需要知道任何有关类型的信息——毕竟它不会尝试使用该类型的任何成员。在执行时 GetData 可以找到关于 T 的信息 - 但在编译时它不需要。

试想一下 - 如果这没有起作用,那么 LINQ to Objects 将完全崩溃,因为您只能将它用于系统类型的序列!

基本上,这样做是完全安全的。

关于c# - 将类型传递给未知的类库泛型方法 - 为什么它有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362414/

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