[英]Generic contraints
我有一个要在创建时强制执行一些通用约束的类
Myobject.cs
public class MyObject<T> where T : ObjectBase, new()
{
public MyObject()
{
}
public bool Validate(out ServiceError? message)
{
// validation
}
}
ObjectBase.cs
public abstract class ObjectBase
{
public abstract bool Validate(out ServiceError? message);
}
我想知道是否有什么方法可以避免每次我有这样的函数时都必须为T设置通用约束:
ObjectRepo.cs
public void Put<T>(MyObject<T> obj)
where T : ObjectBase, new()
{
// code
}
如果在MyObject类中指定了T的约束,是否有理由每次我都使用MyObject作为参数时都要重新指定?
如果您在类中拥有T,请不要在其方法上重新定义T
public class MyObject<T> where T : ObjectBase, new()
{
//public void Put<T>(MyObject<T> obj)//doesn't work
public void Put(MyObject<T> obj)//works
{
// code
}
}
更新
如果Put是另一个类中的最佳解决方案,则它可以重构代码并将所有T相关的方法移到同一类中(并在该类上添加约束)
更新2
如果无法进行更新1,则可能值得检查是否可以用ObjectBase或其他基类替换T
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.