我最终在C#中使用了有关错误处理的功能方法的本文http://enterprisecraftsmanship.com/2015/03/20/functional-c-handling-failures-input-errors/
我有一个非泛型基类和一个继承该基类的泛型类。它们的目的是为“成功或失败”的想法建模-有时某些情况将返回“我成功”结果,而有时某些情况将返回“我成功,这就是结果”,尽管这与问题。
public class OperationResult
{
public bool Successful { get; protected set; }
public string FailureMessage { get; protected set; }
public Exception Exception { get; protected set; }
protected OperationResult() { }
public static OperationResult Success()
{
Console.WriteLine(1);
return new OperationResult()
{
Successful = true
};
}
// not including failure part for clarity
}
public class OperationResult<T> : OperationResult
{
public T Result { get; private set; }
private OperationResult () { }
public static OperationResult<T> Success(T result)
{
Console.WriteLine(2);
return new OperationResult<T>()
{
Successful = true,
Result = result
};
}
}
我现在遇到的情况是,由于两个方法的名称相同,因此编译器无法再推断类型,因此我需要指定类型。例如:
OperationResult.Success(); // Valid
OperationResult.Success("test"); // Invalid
OperationResult<string>.Success("test"); // Valid - wouldn't usually need to specify T
我忍不住觉得自己做错了什么,或者有更好的方法可以做到这一点。
有没有办法让编译器在不指定我的情况下仍然推断类型?
这是我第一次看到Thing<T>.SomeMethod()
语法(不带方括号()
)-我要这样做是完全错误的吗?
拉莫斯之舞
MYYA
相关分类