このエラーがあります:
タイプ 'System.Collections.Generic.List' を 'System.Collections.Generic.List' に暗黙的に変換することはできません
次のコードの場合:
リストに追加しようとすると:
if (information != null) // not empty
{
foreach (CharacterInformation info in information)
{
chButtons.Add(new GuiSelectCharacterButton(
selectGui,
new Rectangle(100, 100, 450, 100)
));
chButtons[chButtons.Count - 1].ImageTexture = GUISprites.Instance().GetTexture(UITexture.RainbowDash);
chButtons[chButtons.Count - 1].Texture = GUISprites.Instance().GetTexture(UITexture.CommonButtonNotPressed);
chButtons[chButtons.Count - 1].PressedTexture = GUISprites.Instance().GetTexture(UITexture.CommonButtonPressed);
chButtons[chButtons.Count - 1].ImageTextureWidth = 90;
chButtons[chButtons.Count - 1].ImageTextureHeight = 90;
chButtons[chButtons.Count - 1].ButtonPressed += LoginCharacterHandler;
chButtons[chButtons.Count - 1].Font = GameFonts.Instance().GetSpriteFont(FontType.UI);
chButtons[chButtons.Count - 1].Information = information[chButtons.Count - 1];
}
}
// error at this line
buttoncontainer.ButtonList = chButtons;
クラス宣言:
public class GuiSelectCharacterButton : GUIImageButton, IGameUserInterfaceImageButton
{
public GuiSelectCharacterButton(GUI parent, Rectangle area)
: base(parent, area)
{
}
}
インターフェース:
public interface IGameUserInterfaceImageButton : IGameUserInterfaceComponent
{
bool InsideContainer { get; set; }
Rectangle InsideContainerArea { get; set; }
}
IGameUserInterfaceImageButton のリスト:
private List<IGameUserInterfaceImageButton> buttonList;
public List<IGameUserInterfaceImageButton> ButtonList
{
get
{
return buttonList;
}
set
{
buttonList = value;
scrollbarThumbTotalHeight = marginButtons;
scrollbarThumbY = 0;
int yhelper = 0;
foreach (IGameUserInterfaceImageButton button in buttonList)
{
yhelper += marginButtons;
button.InsideContainer = true;
button.InsideContainerArea = new Rectangle(
marginXbutton,
yhelper,
button.Area.Width,
button.Area.Height
);
yhelper += marginButtons + button.Area.Height;
scrollbarThumbTotalHeight += button.Area.Height + marginButtons * 2;
}
scrollbarThumbDrawHeight = 0;
if (scrollbarThumbTotalHeight > Area.Height)
{
scrollbarThumbDrawHeight = (int)Math.Pow(AreaScrollbar.Height, 2) / scrollbarThumbTotalHeight;
}
}
}
私のミスがどこにあるのかわからない。基本クラス (GUIImageButton) は、前述のインターフェースのすべてを実装します。プログラムの他の部分でこれを行いましたが、奇妙な理由でここでは機能しません。