我为 fluent API 的扩展方法提供了三个标记接口:
interface IOne { }
interface ITwo { }
interface IOneOrTwo : IOne, ITwo { }
以及以下扩展方法:
public static IOneOrTwo Foo (this IOne obj, string arg)
{
// do something with arg
return obj; // <- possible without cast?
}
问题:是否有可能在不强制转换的情况下返回 obj ?通常,在这种情况下您需要显式地向下转换,但是,这些接口都不需要底层对象具有任何类型的方法/属性/任何东西。
注意:实际的实现类实现了所有的接口。
问题 2:为什么正在实施IOne
而ITwo
不是自动让实施也属于类型IOneOrTwo
?