【问题标题】:Why is this not cls-compliant?为什么这不符合 cls 标准?
【发布时间】:2012-02-03 00:43:02
【问题描述】:

根据我在网上阅读的内容,如果该字段是private,它可以以_ 开头。但是,当我执行以下操作时,它会抱怨吗?是因为我要返回私人领域吗?对我来说没有意义,因为任何消耗它的东西都不知道 _myObject 那为什么重要呢?

private MyBusinessObject _myObjectBO;

protected MyBusinessObject MyObjectBO
{
    get { return _myObjectBO ?? (_myObjectBO= new MyBusinessObject()); }
}

【问题讨论】:

  • 错误说明了什么? MyObject 是什么?
  • 警告说:“My.Namespace.MyService.MyObjectBO 的类型不是 CLS 投诉”。我只是在 WCF 服务中使用它来调用我的 BO,它具有获取数据等的常用方法。
  • 那么MyBusinessObject 长什么样子?这就是问题所在。
  • 警告是说MyBusinessObject(属性的类型)不合规。
  • 感谢@svick 和@SLaks!我不会指责,但是当他们将某个类库添加到解决方案时,他们没有将某个类库标记为cls-compliant...消息似乎有点误导,因为它锚定在对象上,但我想如果我会引用了其余的对象,我可能会想到 dll 类库本身。无论哪种方式,如果你们中的一个人写了一个答案,我会将其标记为已回答。再次感谢!

标签: c# cls-compliant


【解决方案1】:

消息表明该属性的类型不合规。
检查MyBusinessObject 类;许多开发者忘记添加[assembly: CLSCompliant(true)](不幸的是,它不是标准模板的一部分)

【讨论】:

    【解决方案2】:

    与此相关的一切本质上都不是 CLS 兼容的。 MyObject 是什么样的?我使用以下代码进行了测试,在编译时没有收到 CLS 合规性警告:

    [CLSCompliant(true)]
    public class Program
    {
        private MyObject _myObject;
    
        [CLSCompliant(true)]
        public MyObject ComplaintTypeBO
        {
            get { return _myObject ?? (_myObject = new MyObject()); }
        }
    
        static void Main(string[] args)
        {
        }
    }
    
    [CLSCompliant(true)]
    public class MyObject
    {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多