作者:mobiledu2502870587 | 来源:互联网 | 2022-11-21 02:07
我想创建一个可以处理一个接口的多个其他对象的接口.
我尝试在界面中使用界面并在新类中使用对象.
public interface IObject
{
double Value { get; set; }
}
public class FirstObject: IObject
{
double Value { get; set; }
}
public class SecondObject: IObject
{
string Titel { get; set; }
double Value { get; set; }
}
public interface ICollection
{
IObject[] Values { get; set; }
}
public class Collection: ICollection
{
SecondObject[] Values { get; set; }
}
现在我收到错误,我Collection
没有实现该IObject[] Values
成员.
我想当我使用一个对象(SecondObject
)从接口IObject
实现时Collection
应该处理这个.
我做错了什么,怎么解决这个问题?
1> Patrick Hofm..:
使用泛型可能会更好一些:
public interface ICollection where T : IObject
{
T[] Values { get; set; }
}
public class Collection : ICollection
{
public SecondObject[] Values { get; set; }
}
它现在不起作用的原因是签名应该完全匹配.这意味着它Values
应该是一个数组IObject
,而不是.使用泛型可以解决这个问题,同时保持类型约束.
第二个但不可取的解决方案是使用显式接口实现:
public SecondObject[] Values { get; set; }
IObject[] ICollection.Values
{
get
{
return this.Values;
}
set
{
this.Values = value?.Cast().ToArray();
}
}