我想在C#实现中强制转换接口定义的类型。
例如):
public interface IModel
{
IModel Apply(IModel from);
}
public class XxxModel: IModel
{
public XxxModel Apply(XxxModel from) // <- Interface Implementation Error
{
}
}作为对策:
public class XxxModel: IModel
{
public IModel Apply(IModel from)
{
if (from.GetType() != typeof(XxxModel))
throw new ArgumentException("Type Not Matched.");
...
}
}然而,这留下了在执行过程中出现错误的可能性。我想让参数和返回值的类型成为一个实现类。
最好的方法是什么?
发布于 2020-07-15 20:34:56
您可以使用实现类作为泛型类型来创建泛型接口:
public interface IModel<T> where T: IModel<T>
{
T Apply(T from);
}
public class XxxModel: IModel<XxxModel>
{
public XxxModel Apply(XxxModel from) // All good
{
}
}https://stackoverflow.com/questions/62914902
复制相似问题