【问题标题】:Windws Store App - Convert String into Color in VB.NETWindows 应用商店应用程序 - 在 VB.NET 中将字符串转换为颜色
【发布时间】:2013-07-18 02:19:41
【问题描述】:

在 VB.NET 中没有适用于 Windows 应用商店应用的 FromName 方法。如何将字符串转换为颜色?我想通过传递颜色的字符串值来设置对象的填充颜色。

我找到了适用于 C# 的解决方法

public static Color FromName(string name)
{
     var property = typeof(Colors).GetRuntimeProperty(name);
     return (Color)property.GetValue(null);
}

我似乎无法将其翻译成等效的 VB.NET 代码。

我也尝试使用上面的代码编写 Windows 运行时组件,但它说 GetRunTimeProperty 甚至没有在任何地方定义。

【问题讨论】:

    标签: vb.net windows-8 windows-store-apps c#-to-vb.net


    【解决方案1】:
    Public Function FromName(ColName As String) As SolidColorBrush
            Dim [property] = System.Reflection.RuntimeReflectionExtensions.GetRuntimeProperty(GetType(Windows.UI.Colors), ColName)
            Return New SolidColorBrush(DirectCast([property].GetValue(Nothing), Windows.UI.Color))
    End Function
    

    完成了!

    【讨论】:

    • 干得好!没有什么比解决自己的问题更有意义的了。
    • 是的(:对象浏览器来救援 :P 我搜索了 GetRuntimeProperty,这就是我的希望实现的地方。
    【解决方案2】:

    这不行吗?

    Public Shared Function FromName(name As String) As Color
        Dim [property] = GetType(Colors).GetRuntimeProperty(name)
        Return DirectCast([property].GetValue(Nothing), Color)
    End Function
    

    【讨论】:

    • 我已经尝试过机器人翻译 Carl。不,它没有用。
    • 它说 GetRuntimeProperty 不是 System.Type 的成员
    • 很奇怪 RuntimeReflectionExtensions.GetRuntimeProperty Method 的 MSDN 文档说它在 Windows 8 中受支持。
    • 我使用的是 8.1,可能是这个问题?我试过在 VS2012 和 VS2013 Preview 中。
    • 是的,我没有看到任何更新的 Windows 8.1 文档,但很可能是 Windows 8.1 中的反射发生了更改,这些更改尚未在 MSDN 上记录。抱歉,我帮不上忙,祝你好运。
    【解决方案3】:

    GetRuntimeProperty 是一种扩展方法,不是 System.Type 的成员。您需要导入系统。反射使用它。有关 VB 中的扩展方法的更多信息,请参阅http://msdn.microsoft.com/en-us/library/bb384936.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多