好了说,我有以下简单的类:什么是从方法返回接口类型的正确方法?
public interface IResult<T>
{
T Results { get; set;}
string Message { get; set;}
}
public class Result<T> : IResult<T>
{
T Results { get; set;}
string Message { get; set;}
}
public class Result2<T> : IResult<T>
{
T Results { get; set;}
string Message { get; set;}
}
现在,当我想调用一些方法来返回IResult,哪条路是正确的?
public class TestClass
{
public bool TryDoSomething(out IResult<bool> result)
{
// Do stuff
result.Message = "Out!";
return true; // for example
}
public IResult<bool> DoSomething(IResult<bool> result)
{
// Do Stuff
result.Message = "Sent in!";
result.Result = true;
return result;
}
public IResult<bool> DoSomething()
{
// Do Stuff
IResult<bool> result = new Result<bool>();
result.Message = "I'm a Result!";
result.Result = true;
return result;
}
}
现在说我其实是想一个结果2,是能够更好地创建并发送过来的参数(方法#1和#2),或创建一个新的结果,但重铸它作为IResult再到结果2如在方法#3中那样?
public class GetResults
{
public void GetResults()
{
Result2<bool> results = new Result2<bool>();
if (TryDoSomething(out results))
{
Debug.WriteLine(results.Message);
}
results = DoSomething(results);
if (results.Result) Debug.WriteLine(results.Message);
results = DoSomething();
if (results.Result) Debug.WriteLine(results.Message);
}
}
那么在Method中创建接口实现还是作为参数发送它更好?
顺便说一句,你不需要'out'参数,这些工作与通常只传递参数有些不同。 – BoltClock 2012-02-07 18:50:28
“结果”和“结果2”必须将它们从接口实现的属性声明为“public”。另外,'TestClass.TryDoSomething'必须在使用它之前分配'result'(因为它被声明为“out”)。 – 2012-02-07 18:53:52
@BoltClock:如果点的值是由被调用的方法创建的,你*需要'out'参数。 (在这种情况下,'TryDoSomething'不会首先编译......) – 2012-02-07 18:54:24