c# - 有没有办法枚举一个类中的所有静态函数?

标签 c# .net static ienumerable xamarin.forms

我有一个包含很多静态方法的类,我将其用作一种样式表。

你给它的一个方法一个标签,它设置一堆标签属性,比如颜色、字体系列和字体大小。

我想创建一个页面,您可以在其中查看所有不同的标签样式,因此我想列举这些静态方法,这样我就可以将每个方法应用于一个标签。

这可能吗?有没有更好的方法来模板化对象属性?

public static class Palette
{

    public static class LabelStyle
    {

        public static void H3 (ref Label label)
        {
            label.TextColor     = Xamarin.Forms.Color.White;
            label.FontFamily    = "Myriad";
            label.FontSize      = 14;
        }

        public static void H4 (ref Label label)
        {
            if (Device.OS == TargetPlatform.iOS) 
            {
                label.FontFamily = Device.OnPlatform ("Myriad Pro", null, null);
            } 
            else
            {
                label.FontFamily = "Myriad";
            }

            label.TextColor     = Color.BlueBlack;
            label.FontSize      = 14;
        }

        ...
  }
  ...
}

最佳答案

Reflection是这里的关键词。

typeof(Palette.LabelStyle).GetMethods(BindingFlags.Static)

它也可以用于各种类似的目的。

您可能必须选择适当的绑定(bind)标志。在此示例中,BindingFlags.Static 用于枚举静态方法。对于非公开的,您需要另一个绑定(bind)标志。那将是:

BindingFlags.Static | BindingFlags.NonPublic

例如。

关于c# - 有没有办法枚举一个类中的所有静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049554/

相关文章:

.net - 如何判断DataRow中是否存在某列?

.net - 如何在 Visual Studio 之外启动 WCF 服务?

java - Java中serialVersionUID是如何序列化的?

c++ - 从派生类访问静态常量变量

c# - 将动态生成的 GridView 放入 ASP.Net C# 中的特定 <div>

c# - WPF 如何移动焦点?

c# - 带有 HtmlAgilityPack 的 HTML Linq,或 P​​CL 中的替代方案

c# - 如何使用 Selenium Webdriver 和 Internet Explorer 10 处理 Windows 身份验证?

c# - 具有有损压缩的 .NET 多页 Tiff

Java静态引用与动态引用和调用