11

构建项目时出现错误:

警告为错误:“OthersAddresses.AddresseTypeParameter”类型不符合 CLS C:...\Units\OthersAddresses.ascx.cs

public Address.AddressTypeEnum AddressTypeParameter
    {
        get 
        {
            return _addressTypeParameter;
        }
        set 
        {
            _addressTypeParameter = value;
        }
    }

和这个:

警告为错误:“Global.UserInSession”类型不符合 CLS C:...\Global.asax.cs

public static User UserInSession
{
    get
    {
        return (HttpContext.Current.Session["CurrentUser"] == null) 
            ? null 
            : HttpContext.Current.Session["CurrentUser"] as User;
    }
    set
    {
        HttpContext.Current.Session["CurrentUser"] = value;
    }
}

[CLSCompliant(false)]我之前添加了属性UserInSession并且AddresseTypeParameter它有效,但我想了解它为什么不符合 CLS。

有关类和枚举的更多信息:

类用户 (User.cs)

public class User
    {
        private string _uniqueIdentifier;
        private string _password = string.Empty;
        private string _email = string.Empty;
        private string _passwordQuestion = string.Empty;
        private string _passwordAnswer = string.Empty;
        private string _id_directions_db = string.Empty;
        private string _id_gesab = string.Empty;
        private string _zipCode = string.Empty;
        private string _fonction_id = string.Empty;
        private string _fonction = string.Empty;
        private string _structure_id = string.Empty;
        private string _structure = string.Empty;
        private string _firstName = string.Empty;
        private string _lastName = string.Empty;
        private string _company = string.Empty;
        private string _avatarPath = string.Empty;
        private Role _role = new Role();
        private List<Address> _addressList = new List<Address>();
        private string _otherInformation = string.Empty;
        private MembershipUser _membershipUserAssociated = null;
        ...

        public enum GenderEnum
        {
            Empty = 0,
            Monsieur,
            Madame
        }

枚举地址类型枚举 (Address.cs)

public class Address
{
    private AddressTypeEnum _addressType;
    private string _firstName = string.Empty;
    private string _lastName =string.Empty;
    private string _structure = string.Empty;
    private string _structureComplementary = string.Empty;
    private string _addressStreet = string.Empty;
    private string _addressComplementary = string.Empty;
    private string _bp = string.Empty;
    private string _zipCode = string.Empty;
    private string _country = string.Empty;
    private string _countryId = string.Empty;
    private string _city = string.Empty;
    private string _phone = string.Empty;
    private string _fax = string.Empty;
    private string _email = string.Empty;

    public enum AddressTypeEnum
    {
        Empty = 0,
        Personal = 1,
        Billing = 2,
        Delivery = 3
    }
4

2 回答 2

9

您需要使用CLSCompliantAttribute

如果没有 CLSCompliantAttribute 应用于程序元素,则默认情况下:

  • 该程序集不符合 CLS。
  • 仅当其封闭类型或程序集符合 CLS 时,该类型才符合 CLS。
  • 仅当类型符合 CLS 时,类型的成员才符合 CLS。

除此之外,您需要确保您的程序集确实符合 CLS

于 2012-01-04T14:36:47.880 回答
1

这让您知道“'OthersAdresses.AdresseTypeParameter' 的类型不符合 CLS”,而不是属性必须符合。查看types,而不是 properties,您可能会发现导致警告的原因。

于 2012-01-04T15:13:16.083 回答