Roslyn尚未实现此语言功能(“缺失类型”)

时间:2014-11-04 13:25:21

标签: c# dynamic compilation roslyn

我在我的代码中使用了Rosyln 1.1版本。

当我编译我的viewModel(C#)代码时,Roslyn发生错误。

错误:

  

异常:System.Exception:此语言功能('缺少类型')是   尚未在罗斯林实施。此语言功能('缺少类型')   目前尚未在罗斯林实施。

代码:

/// <summary>
/// ViewModel of APPTIMGDEF.xaml
/// </summary>
[Serializable]
public class APPTIMGDEFVM : BaseListItemEditViewModel
{

    #region Private Members
    private ObservableCollection<DTOBackgroundImageModel> _items = new ObservableCollection<DTOBackgroundImageModel>();
    private DTOBackgroundImage _filter = new DTOBackgroundImage();
    private DTOBackgroundImageModel _selectedDTO = new DTOBackgroundImageModel();
    private bool _isDateVisible;
    private string _filePath_1;
    private string _filePath_2;
    private string _filePath_3;
    private bool _isInsertEnable;
    private DelegateCommand _showImageCommand;
    private bool _isCodeReadOnly;
    #endregion Private Members

    #region Private Methods


    private byte[] convertToByteArray(string hex)
    {

        string[] arr = hex.Split('-');
        byte[] data = new byte[arr.Length];

        for (int i = 0; i < arr.Length; i++) data[i] = Convert.ToByte(arr[i], 16);

        return data;
    }


    private void ShowImage(object parameter)
    {
        object[] prm = Array.ConvertAll((object[])parameter, s => (object)s);
        string buttonColumn = prm[0] as string;
        DTOBackgroundImageModel DTOBackgroundImageModel = prm[1] as DTOBackgroundImageModel;
        Window popUp = new Window();
        popUp.Height = 300; popUp.Width = 512;
        byte[] newByte = null ;
        switch (buttonColumn)
        {
            case "WHT":
               newByte = convertToByteArray(DTOBackgroundImageModel.WhiteImage.Data);         
                break;

            case "LGRAY":
                newByte = convertToByteArray(DTOBackgroundImageModel.LightGrayImage.Data);
                break;

            case "DARK":
                newByte = convertToByteArray(DTOBackgroundImageModel.DarkGrayImage.Data);
                break;
        }

        MemoryStream memStream = new MemoryStream(newByte);
        System.Drawing.Image image = System.Drawing.Image.FromStream(memStream);
        var bitmap = new System.Drawing.Bitmap(image);
        var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(),
                                                                IntPtr.Zero,
                                                                Int32Rect.Empty,
                                                                BitmapSizeOptions.FromEmptyOptions());
        bitmap.Dispose();
        var brush = new ImageBrush(bitmapSource);
        popUp.Background = brush;
        double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
        double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
        double windowWidth = popUp.Width;
        double windowHeight = popUp.Height;
        popUp.Left = (screenWidth / 2) - (windowWidth / 2);
        popUp.Top = (screenHeight / 2) - (windowHeight / 2);
        popUp.ShowDialog();    
    }

    #endregion Private Methods

    #region Constructors

    /// <summary>
    /// Constructor
    /// </summary>
    public APPTIMGDEFVM(UListItemEditScreen screen)
        : base(screen)
    {
        _showImageCommand = new DelegateCommand(ShowImage);
    }

    #endregion Constructors

    #region Public Properties


    /// <summary>
    /// 
    /// </summary>
    public bool IsInsertEnable
    {
        get { return _isInsertEnable; }
        set
        {
            if (_isInsertEnable != value)
            {
                _isInsertEnable = value;
                OnPropertyChanged("IsInsertEnable");
            }
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public DelegateCommand ShowImageCommand
    {
        get { return _showImageCommand; }
        set
        {
            if (_showImageCommand != value)
            {
                _showImageCommand = value;
                OnPropertyChanged("ShowImageCommand");
            }
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public string FilePath_1
    {
        get { return _filePath_1; }
        set
        {
            if (_filePath_1 != value)
            {
                _filePath_1 = value;
                OnPropertyChanged("FilePath_1");
            }
        }
    }

    public string FilePath_2
    {
        get { return _filePath_2; }
        set
        {
            if (_filePath_2 != value)
            {
                _filePath_2 = value;
                OnPropertyChanged("FilePath_2");
            }
        }
    }

    public string FilePath_3
    {
        get { return _filePath_3; }
        set
        {
            if (_filePath_3 != value)
            {
                _filePath_3 = value;
                OnPropertyChanged("FilePath_3");
            }
        }
    }


    /// <summary>
    /// 
    /// </summary>
    public DTOBackgroundImageModel SelectedDTO
    {
        get { return _selectedDTO; }
        set
        {
            if (_selectedDTO != value)
            {
                IsCodeReadOnly = true;
                _selectedDTO = value;
                IsInsertEnable = false;
                OnPropertyChanged("SelectedDTO");
            }
        }
    }


    /// <summary>
    /// 
    /// </summary>
    public bool IsDateVisible
    {
        get { return _isDateVisible; }
        set
        {
            if (_isDateVisible != value)
            {
                _isDateVisible = value;
                OnPropertyChanged("IsDateVisible");
            }
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public bool IsCodeReadOnly
    {
        get { return _isCodeReadOnly; }
        set
        {
            if (_isCodeReadOnly != value)
            {
                _isCodeReadOnly = value;
                OnPropertyChanged("IsCodeReadOnly");
            }
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public DTOBackgroundImage Filter
    {
        get { return _filter; }
        set
        {
            if (_filter != value)
            {
                _filter = value;
                OnPropertyChanged("Filter");
            }
        }
    }


    /// <summary>
    /// 
    /// </summary>
    public ObservableCollection<DTOBackgroundImageModel> Items
    {
        get { return _items; }
        set
        {
            if (_items != value)
            {
                _items = value;
                OnPropertyChanged("Items");
            }
        }
    }


    #endregion Public Properties

    #region Public Methods

    public override bool NewQuery()
    {
        IsDateVisible = false;
        IsCodeReadOnly = false;
        IsInsertEnable = true;
        return base.NewQuery();
    }

    public override bool Load()
    {
        IsDateVisible = false;
        IsCodeReadOnly = false;
        IsInsertEnable = true;
        return true;
    }

    public override bool Clear()
    {
        IsDateVisible = false;
        IsCodeReadOnly = false;
        IsInsertEnable = true;
        return base.Clear();
    }

    public override bool AddNewItem()
    {
        IsCodeReadOnly = false;
        IsInsertEnable = true;
        return base.AddNewItem();
    }

    public override void AfterRead()
    {

        if (Filter.CategoryCode == "SPC")
        {
            IsDateVisible = true;
        }
    }

    public override bool Read()
    {

        this.Request.Add(Filter);
        ResponseMessage response;
        using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
        {
            response = proxy.ReadListBackgroundImageBy(this.Request);
        }

        List<DTOBackgroundImage> images = response.Get<List<DTOBackgroundImage>>();
        ObservableCollection<DTOBackgroundImageModel> temp = new ObservableCollection<DTOBackgroundImageModel>();
        foreach (var item in images.GroupBy(x => x.Code.Substring(0, x.Code.Length - 2)))
        {
            DTOBackgroundImageModel DTOBackgroundImageModel = new DTOBackgroundImageModel();
            DTOBackgroundImageModel.Code = item.Key;
            DTOBackgroundImageModel.CategoryCode = Filter.CategoryCode;
            DTOBackgroundImageModel.WhiteImage = images.Find(x => x.Code == item.Key + "_1");
            DTOBackgroundImageModel.LightGrayImage = images.Find(x => x.Code == item.Key + "_2");
            DTOBackgroundImageModel.DarkGrayImage = images.Find(x => x.Code == item.Key + "_3");
            DTOBackgroundImageModel.Link = DTOBackgroundImageModel.DarkGrayImage.Link;
            DTOBackgroundImageModel.Tooltip = DTOBackgroundImageModel.DarkGrayImage.Tooltip;

              if(Filter.CategoryCode == "SPC")
              {
                  RequestMessage request = new RequestMessage();
                 DTOSpecialDaybackground dtosdb = new DTOSpecialDaybackground();
                 dtosdb.ImageCode = item.Key;
                 request.Add(dtosdb);
                 using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
                 {
                     response = proxy.ReadSpecialDaybackground(request);
                 }      
                  DTOSpecialDaybackground dtoSpecialBackground = response.Get<DTOSpecialDaybackground>();
                  DTOBackgroundImageModel.BeginDate = dtoSpecialBackground.BeginDate;
                  DTOBackgroundImageModel.EndDate = dtoSpecialBackground.EndDate;
                 }
            temp.Add(DTOBackgroundImageModel);
        }
        Items = temp;
        return true;
    }

    public override bool Insert()
    {
        #region Image DTO  
        int i = 1;
        List<DTOBackgroundImage> dtoList = new List<DTOBackgroundImage>();
        DTOBackgroundImage dtoWhiteImage = new DTOBackgroundImage();
        dtoWhiteImage.CategoryCode = Filter.CategoryCode;
        dtoWhiteImage.Link = SelectedDTO.Link;
        dtoWhiteImage.Tooltip =  SelectedDTO.Tooltip;
        dtoWhiteImage.Code = String.Format("{0}_{1}", SelectedDTO.Code, i++);
        dtoWhiteImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_1)); 


        DTOBackgroundImage dtoLightGrayImage = new DTOBackgroundImage();

        dtoLightGrayImage.CategoryCode = Filter.CategoryCode;
        dtoLightGrayImage.Link = SelectedDTO.Link;
        dtoLightGrayImage.Tooltip =  SelectedDTO.Tooltip;
        dtoLightGrayImage.Code = String.Format("{0}_{1}", SelectedDTO.Code, i++);
        dtoLightGrayImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_2));


        DTOBackgroundImage dtoDarkGrayImage = new DTOBackgroundImage();

           dtoDarkGrayImage.CategoryCode = Filter.CategoryCode;
        dtoDarkGrayImage.Link = SelectedDTO.Link;
        dtoDarkGrayImage.Tooltip =  SelectedDTO.Tooltip;
        dtoDarkGrayImage.Code = String.Format("{0}_{1}", SelectedDTO.Code, i++);
        dtoDarkGrayImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_3));

        dtoList.Add(dtoLightGrayImage);
        dtoList.Add(dtoWhiteImage);
        dtoList.Add(dtoDarkGrayImage);
        #endregion Image DTO

        ResponseMessage response;

        this.Request.Add(dtoList);

        using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
        {
            response = proxy.InsertBackgroundImage(this.Request);
        }

        if(Filter.CategoryCode == "SPC")
        {
            DTOSpecialDaybackground dtoSpecialDayBackground = new DTOSpecialDaybackground();
            dtoSpecialDayBackground.ImageCode = SelectedDTO.Code;
            dtoSpecialDayBackground.BeginDate = SelectedDTO.BeginDate;
            dtoSpecialDayBackground.EndDate = SelectedDTO.EndDate;

            this.Request.Add(dtoSpecialDayBackground);
            using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
            {
                response = proxy.InsertSpecialDaybackground(this.Request);
            }                
        }

        return Read();

    }

    public override bool Update()
    {
        ResponseMessage response;
        List<DTOBackgroundImage> imageList = new List<DTOBackgroundImage>();

        SelectedDTO.WhiteImage.Link = SelectedDTO.Link;
        SelectedDTO.WhiteImage.Tooltip = SelectedDTO.Tooltip;          
        if (FilePath_1 != String.Empty)
         SelectedDTO.WhiteImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_1));
        imageList.Add(SelectedDTO.WhiteImage);

        SelectedDTO.LightGrayImage.Link = SelectedDTO.Link;
        SelectedDTO.LightGrayImage.Tooltip = SelectedDTO.Tooltip;        
        if (FilePath_2 != String.Empty)
            SelectedDTO.LightGrayImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_2));               
         imageList.Add(SelectedDTO.LightGrayImage);


        SelectedDTO.DarkGrayImage.Link = SelectedDTO.Link;
        SelectedDTO.DarkGrayImage.Tooltip = SelectedDTO.Tooltip;
        if (FilePath_3 != String.Empty)
            SelectedDTO.DarkGrayImage.Data = BitConverter.ToString(File.ReadAllBytes(FilePath_3));      
        imageList.Add(SelectedDTO.DarkGrayImage);

        this.Request.Add(imageList);
        using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
        {
                response = proxy.UpdateBackgroundImage(this.Request);
         }


        if (Filter.CategoryCode == "SPC")
        {
            DTOSpecialDaybackground dtoSpecialDayBackground = new DTOSpecialDaybackground();
            dtoSpecialDayBackground.ImageCode = SelectedDTO.Code;
            dtoSpecialDayBackground.BeginDate = SelectedDTO.BeginDate;
            dtoSpecialDayBackground.EndDate = SelectedDTO.EndDate;

            this.Request.Add(dtoSpecialDayBackground);
            using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
            {
                response = proxy.UpdateSpecialDaybackground(this.Request);
            }

        }

        return Read();
    }

    public override bool Delete()
    {
        int i= 1;
        SelectedDTO.WhiteImage.Code = String.Format("{0}_{1}",SelectedDTO.Code,i++);
        SelectedDTO.LightGrayImage.Code = String.Format("{0}_{1}", SelectedDTO.Code, i++);
        SelectedDTO.DarkGrayImage.Code = String.Format("{0}_{1}", SelectedDTO.Code, i);
        List<DTOBackgroundImage> imageList = new List<DTOBackgroundImage>();
        imageList.Add(SelectedDTO.WhiteImage);
        imageList.Add(SelectedDTO.LightGrayImage);
        imageList.Add(SelectedDTO.DarkGrayImage);


        this.Request.Add(imageList);
        ResponseMessage response;
        using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
        {
            response = proxy.DeleteBackgroundImage(this.Request);
        }


        if (Filter.CategoryCode == "SPC")
        {
            DTOSpecialDaybackground dtoSpecialDayBackground = new DTOSpecialDaybackground();
            dtoSpecialDayBackground.ImageCode = SelectedDTO.Code;
            this.Request.Add(dtoSpecialDayBackground);
            using (ISApplication proxy = Service.CreateProxy<ISApplication>(this))
            {
                response = proxy.DeleteSpecialDaybackground(this.Request);
            }
        }

        return Read();
    }



    #endregion Public Methods

}

感谢。

1 个答案:

答案 0 :(得分:1)

升级到较新版本的Roslyn。在重命名之前,您可能仍在使用“Roslyn”命名的NuGet包。最新的是here