方法可以从接口 return 继承接口中的另一种类型吗?
Can method inheritated from interface return another type that in interface?
假设我有这样的代码:
interface IObject
{
IObject GetSomeObject();
}
public class ObjectClass : IObject
{
IObject GetSomeObject()
{
// method implementation here
}
}
有没有什么办法,让我把classObjectClass
的GetSomeObject()
方法改成returnObjectClass
,没有IObject
?
我知道我可以这样使用它:
ObjectClass object1= someObject1.GetSomeObject() as ObjectClass;
但是我想达到的是:
public class ObjectClass : IObject
{
ObjectClass GetSomeObject()
{
// method implementation here
}
}
这样可以吗?
您可以使用泛型:
interface IObject<T> where T : IObject<T>
{
T GetSomeObject();
}
public class ObjectClass : IObject<ObjectClass> { ... }
您可以使用泛型:
interface IObjectReturnable<T>
{
T GetSomeObject();
}
public class ObjectClassRet : IObjectReturnable<ObjectClassRet>
{
public ObjectClassRet GetSomeObject()
{
// method implementation here
return new ObjectClassRet();
}
}
您可以使用 explicit interface implementation:
public interface IObject
{
IObject GetSomeObject();
}
public class ObjectClass : IObject
{
public ObjectClass GetSomeObject()
{
return this;
}
IObject IObject.GetSomeObject()
{
return this;
}
}
这样,访问 ObjectClass
的消费者可以调用 ObjectClass GetSomeObject()
,而通过 IObject
访问此 class 实例的消费者只能调用 IObject GetSomeObject()
.
假设我有这样的代码:
interface IObject
{
IObject GetSomeObject();
}
public class ObjectClass : IObject
{
IObject GetSomeObject()
{
// method implementation here
}
}
有没有什么办法,让我把classObjectClass
的GetSomeObject()
方法改成returnObjectClass
,没有IObject
?
我知道我可以这样使用它:
ObjectClass object1= someObject1.GetSomeObject() as ObjectClass;
但是我想达到的是:
public class ObjectClass : IObject
{
ObjectClass GetSomeObject()
{
// method implementation here
}
}
这样可以吗?
您可以使用泛型:
interface IObject<T> where T : IObject<T>
{
T GetSomeObject();
}
public class ObjectClass : IObject<ObjectClass> { ... }
您可以使用泛型:
interface IObjectReturnable<T>
{
T GetSomeObject();
}
public class ObjectClassRet : IObjectReturnable<ObjectClassRet>
{
public ObjectClassRet GetSomeObject()
{
// method implementation here
return new ObjectClassRet();
}
}
您可以使用 explicit interface implementation:
public interface IObject
{
IObject GetSomeObject();
}
public class ObjectClass : IObject
{
public ObjectClass GetSomeObject()
{
return this;
}
IObject IObject.GetSomeObject()
{
return this;
}
}
这样,访问 ObjectClass
的消费者可以调用 ObjectClass GetSomeObject()
,而通过 IObject
访问此 class 实例的消费者只能调用 IObject GetSomeObject()
.