繁体   English   中英

如何在 C# 中访问泛型基类参数的属性?

[英]How to access properties of generic base class's parameter in C#?

我有一个通用类PopupDialog ,它具有诸如bool IsBackDismissEnabled类的属性。 这用于表示按下后退按钮是否会关闭对话框。

我正在使用 Xamarin.CommunityToolkit Popup 来显示弹出对话框。

这是我的 PopupDialog.cs

public class PopupDialog
{
    public bool IsBackDismissEnabled { get; set; }
}

这是我的对话框实现

using Xamarin.CommunityToolkit.UI.Views;

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ForgotPasswordDialog : Popup<PopupDialog>
{
    public ForgotPasswordDialog()
    {
        InitializeComponent();

        // I want to access IsBackDismissEnabled here
        // something like base.IsBackDismissEnabled = true;
    }
}

我想从Popup<PopupDialog>的派生类访问PopupDialogIsBackDismissEnabled怎么办?

简而言之,我有一个类被指定为泛型类的参数。 并且该泛型类派生在一个类中,我想从该类中访问指定为泛型类参数的先前类的属性。

我从未见过有人试图做你正在尝试的事情。 我什至不确定这是否合乎逻辑。 请解释您要做什么:您为什么希望PopupDialog成为generic parameter

考虑将其作为Popup构造函数的参数,并将其保存在属性或字段中:

public class Popup
{
    public Popup(ISomeInterface myParam)
    {
        this.MyParam = myParam;
    }

    public ISomeInterface MyParam;
}

public class ForgotPasswordDialog : Popup
{
    public ForgotPasswordDialog() : base(new PopupDialog())
    {
    }

    void SomeMethod()
    {
        // Access MyParam
        ... this.MyParam.IsBackDismissEnabled ...
    }
}

public interface ISomeInterface
{
    bool IsBackDismissEnabled { get; set; }
}

public class PopupDialog : ISomeInterface
{
    public bool IsBackDismissEnabled { get; set; }
    ...
}

/// Usage
var myVariable = new ForgotPasswordDialog();
... myVariable.MyParam.IsBackDismissEnabled ...

为了有用,您需要指定MyParam具有的interfacebase class 这里我展示ISomeInterface 这可能是PopupDialog的一些基类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM