C#不捕获方法返回值仍然需要对返回类型的引用

C#不捕获方法返回值仍然需要对返回类型的引用,c#,C#,我有两个DLL和我的应用程序。我的应用程序引用DLL1,DLL1引用DLL2,如下所示: 应用程序->DLL1->DLL2 DLL1包含返回DLL2中类型的方法。此方法在我的应用程序中不可用,因为我的应用程序没有对DLL2的引用。这是我的密码: // My Application DLL1.DoSomething(""); <-- The type 'MyType' is defined in an assembly that is not references. // DLL1 pub

我有两个DLL和我的应用程序。我的应用程序引用DLL1,DLL1引用DLL2,如下所示:

应用程序->DLL1->DLL2

DLL1包含返回DLL2中类型的方法。此方法在我的应用程序中不可用,因为我的应用程序没有对DLL2的引用。这是我的密码:

// My Application
DLL1.DoSomething(""); <-- The type 'MyType' is defined in an assembly that is not references.

// DLL1
public static MyType DoSomething(string x);

// DLL2
public class MyType;
//我的应用程序

DLL1.剂量测定法(“”) 代码捕获返回的结果,然后立即将其丢弃。编译器并不十分关心您对结果的处理,如果有的话。但为了完全理解该方法调用,必须知道与之相关的所有类型


您可以隐藏方法中使用的类型,但调用该方法的任何代码都必须知道方法签名公布的任何类型。

代码捕获返回的结果,它只是立即将其丢弃。编译器并不十分关心您对结果的处理,如果有的话。但为了完全理解该方法调用,必须知道与之相关的所有类型


您可以隐藏方法中使用的类型,但调用该方法的任何代码都必须知道方法签名播发的任何类型。

不使用常规C#-您需要访问返回类型才能解析该方法。您可以通过反射或通过
动态
(如果它是一个实例方法)调用它,但是添加缺少的引用会更容易。无论如何,在运行时都需要它,这样添加引用时不会丢失任何内容。

不使用常规C#-您需要访问返回类型才能解析该方法。您可以通过反射或通过
动态
(如果它是一个实例方法)调用它,但是添加缺少的引用会更容易。无论如何,在运行时都需要它,这样添加引用就不会丢失任何东西。

你为什么关心它?不管怎样,你都需要集合。你为什么在乎?无论如何,您都需要程序集。我认为编译器不需要知道生成CIL的类型(AFAIK
void
是唯一需要特殊处理的类型)。当然,对于编译器编写者来说,假设所有相关类型的知识都是很方便的。@codesin混沌你把理论和实现混为一谈。你的第一句是理论,第二句是假设实现。对于我们大多数专家来说,理解你的意思是没有问题的,但是如果你的评论要被所有读者阅读和理解,你可能应该把两者之间的区别弄清楚:)。我认为编译器不需要知道生成CIL的类型(只有AFAIK
void
需要特殊处理)。但是当然,编译器编写者可以很方便地假设所有相关类型的知识。@CodesIn混沌你将理论与实现相结合。你的第一句是理论,第二句是假设实现。对于我们大多数专家来说,理解你的意思是没有问题的,但是如果你的评论要被阅读和理解的话对于所有读者来说,您可能应该更清楚地说明两者之间的区别:)。