xamarin 从contentView继承的类

f45qwnt8  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(119)

我有一个继承contentView的类,一个叫做MeasureCompCommon的类。
我编写了在这门课中通用的部分。
现在,每个类都要继承并使用这个MeasureCompCommon类。继承自一个名为MeasureMainView的类。
出现多个错误。

################ 错误#########################################################################################################################################################################################################################################

编译器错误CS0579
重复的'attribute'属性
除非属性在其AttributeUsage中指定AllowMultiple = true,否则无法多次指定同一属性。
编译器错误CS0111型别'class'已经定义了名为'member'的成员,它具有相同的参数型别
如果类包含两个具有相同名称和参数类型的成员声明,则会发生CS0111。

namespace POP.Component
{
    public partial class MeasureCompCommon : ContentView
    {
        public MeasureCompCommon()
        {
            Initialized();
        }

        private void Initialized()
        {
            if (this.Parent is StackLayout)
            {
                StackLayout sl = this.Parent as StackLayout;
                int count = sl.Children.Count;

                for (int i = 0; i < count; i++)
                {
                    if (sl.Children[i] != this)
                        sl.Children.RemoveAt(i);
                }
            }
        }
    }
}

namespace POP.Component
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MeasureMainView : MeasureCompCommon
    {
        DisplayInfo m_MainDisplayInfo = DeviceDisplay.MainDisplayInfo;

        public MeasureMainView()
        {
            InitializeComponent();
            InitButton();
        }
7kqas0il

7kqas0il1#

默认情况下,属性被限制为只能应用于单个字段/属性/等一次。所有子类都以相同的方式受到限制,如果您需要同一属性的多个示例,则需要显式将AllowMultiple设置为true。因此,您可以在需要继承measurecomprom类的每个类之前添加以下语句:

[attributeusage (attributetargets. Method, AllowMultiple = true)]

在允许多次使用的属性(Attribute)上,您也应该覆写TypeId属性(Property),以确保PropertyDescriptor.Attributes等属性(Property)如预期般运作。最简单的方法是实作该属性(Property),以传回属性(Attribute)执行严修本身:

[AttributeUsage(ttributetargets. Method, AllowMultiple = true)]
public class  MeasureMainView : MeasureCompCommon
{
public override object TypeId
{
    get
    {
        return this;
    }
}
}

如果您有任何后续问题,可以再次发表评论。

相关问题