我经常发现需要按照以下方式做点什么:
public class OperationResult
{
bool succes;
SomeOtherObject someobject;
}
public interface ICanDoSomethingWeird
{
OperationResult DoMyThing();
}
Run Code Online (Sandbox Code Playgroud)
OperationResult实际上是属于ICanDoSomethingWeird接口的类.我觉得很烦人我不能把它放在界面的命名空间中.我想知道别人怎么处理这件事.你只是把它贴在全局命名空间中吗?或者从接口所在的命名空间中只有一个命名空间?
我目前的方法是将OperationResult类重命名为ICanDoSomethingWeird_OperationResult,但是对于它的漂亮程度并没有给我留下太深刻的印象:)
有人有更好的解决方案吗?
Ken*_*art 10
如果OperationResult
是仅由ICanDoSomethingWeird
和客户使用的类型ICanDoSomethingWeird
,则它属于与"上下文"相同的"上下文" ICanDoSomethingWeird
.也就是说,它属于在相同的命名空间ICanDoSomethingWeird
:
namespace MyNamespace
{
public class OperationResult {}
public interface ICanDoSomethingWeird
{
OperationResult DoMyThing();
}
}
Run Code Online (Sandbox Code Playgroud)
想想客户端代码.你更喜欢这个:
using MyNamespace;
ICanDoSomethingWeird myWeirdThing = ...;
ICanDoSomethingWeird.OperationResult result = myWeirdThing.DoMyThing();
Run Code Online (Sandbox Code Playgroud)
或这个:
using MyNamespace;
ICanDoSomethingWeird myWeirdThing = ...;
OperationResult result = myWeirdThing.DoMyThing();
Run Code Online (Sandbox Code Playgroud)
后者对我来说更有意义,并且是接口所关注的唯一选择.您不能在接口中声明内部类型.并注意有关嵌套类型的一般建议:
如果类型可能在包含类型之外引用,请不要使用嵌套类型.