当前位置:  开发笔记 > 编程语言 > 正文

如何处理不允许在c#中定义接口中的类型

如何解决《如何处理不允许在c#中定义接口中的类型》经验,为你挑选了1个好方法。

我经常发现需要按照以下方式做点什么:

public class OperationResult
{
  bool succes;
  SomeOtherObject someobject;
}


public interface ICanDoSomethingWeird
{
  OperationResult DoMyThing();
}

OperationResult实际上是属于ICanDoSomethingWeird接口的类.我觉得很烦人我不能把它放在界面的命名空间中.我想知道别人怎么处理这件事.你只是把它贴在全局命名空间中吗?或者从接口所在的命名空间中只有一个命名空间?

我目前的方法是将OperationResult类重命名为ICanDoSomethingWeird_OperationResult,但是对于它的漂亮程度并没有给我留下太深刻的印象:)

有人有更好的解决方案吗?



1> Kent Boogaar..:

如果OperationResult是仅由ICanDoSomethingWeird和客户使用的类型ICanDoSomethingWeird,则它属于与"上下文"相同的"上下文" ICanDoSomethingWeird.也就是说,它属于相同的命名空间ICanDoSomethingWeird:

namespace MyNamespace
{
    public class OperationResult {}

    public interface ICanDoSomethingWeird
    {
        OperationResult DoMyThing();
    }
}

想想客户端代码.你更喜欢这个:

using MyNamespace;

ICanDoSomethingWeird myWeirdThing = ...;
ICanDoSomethingWeird.OperationResult result = myWeirdThing.DoMyThing();

或这个:

using MyNamespace;

ICanDoSomethingWeird myWeirdThing = ...;
OperationResult result = myWeirdThing.DoMyThing();

后者对我来说更有意义,并且是接口所关注的唯一选择.您不能在接口中声明内部类型.并注意有关嵌套类型的一般建议:

如果类型可能在包含类型之外引用,请不要使用嵌套类型.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有