首页 > 解决方案 > C#调用重载方法参数问题

问题描述

我有 3 种方法的课程:

IConnection CreateConnection(AuthType authentication, string user, string password);
IConnection CreateConnection(string ticket);
IConnection CreateConnection(IMetadata metadata);

另一个类调用这些方法中的 2 个:

IConnection connection = ticket != null ? manager.CreateConnection(ticket) : manager.CreateConnection(sso, user, password);

调用类 IMetadata 的命名空间不包括在内,所以这在那里不知道。编译器在第一次调用时抛出错误(以票据作为参数)“类型'IMetadata'是在未引用的程序集中定义的。”。但第二次调用没有错误(使用 sso + 用户 + 密码)。似乎编译器不知何故需要 IMetadata 的知识来决定调用哪一个 1 参数方法重载。任何解决方案的想法?

编辑:对不起,我忘了提到这个错误是在调用类中删除 IMetadata 的命名空间的引用后出现的。我们不希望在那里引用(与此问题无关的原因)。

编辑 2:使用票证参数添加第二个虚拟参数以重载将解决该问题。但这不是我希望的解决方案。

标签: c#methodsoverloading

解决方案


推荐阅读