4
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = Environment.GetResourceString("test"); //compile-time error
        }
    }
}

エラーは次のとおりです。「System.Environment」に「GetResourceString」の定義が含まれていません。

編集:OPは、CompactFrameworkv3.5を使用していると述べています。

写真が表示されません。コードの何が問題になっていますか?ありがとう!

4

3 に答える 3

8

Environment.GetResourceStringは公開されていません

internal static string GetResourceString(string key);

リソースにアクセスする方法についてはMichaelPetrottasの回答を参照するか、http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspxのサンプルを参照してください。

于 2009-11-25T01:54:51.770 に答える
6

Environment.GetResourceStringMSDNによると、 CompactFrameworkのバージョン2.0にのみ存在するようです。記事が信じられるべきであるならば、それは標準的な枠組みに決して存在しませんでした。

あなたは何をしようとしているのですか?それがあなたが求めているローカリゼーションであるなら、あなたは望むかもしれませんResourceManager.GetString

System.Resources.ResourceManager myManager = new 
   System.Resources.ResourceManager("ResourceNamespace.myResources", 
   myAssembly);

// Retrieves String and Image resources.
string myString = myManager.GetString("StringResource");
于 2009-11-25T01:30:56.093 に答える
1

アクセスすることはできませんEnvironment.GetResourceStringが、mscorlibの内部エラーメッセージにアクセスする必要がある場合は、その独自の実装を定義してください。

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;

static class EnvironmentEx
{
    // Mscorlib's resources.
    private static ResourceSet resources = null;

    // Gets mscorlib's internal error message.
    public static string GetResourceString(string name)
    {
        if (resources == null)
        {
            var assembly = Assembly.GetAssembly(typeof(object));
            var assemblyName = assembly.GetName().Name;
            var manager = new ResourceManager(assemblyName, assembly);
            resources = manager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
        }
        return resources.GetString(name ?? throw new ArgumentNullException(nameof(name)));
    }

    // Gets parametrized mscorlib's internal error message.
    public static string GetResourceString(string name, params object[] args)
    {
        return string.Format(GetResourceString(name), args);
    }
    
    static void Main()
    {
        string message = GetResourceString("ArgumentOutOfRange_Bounds_Lower_Upper", -1, 1);
        // message = "Argument must be between -1 and 1".
    }
}

PSここにIDを持つすべてのメッセージのリストがあります。

于 2022-02-07T20:43:22.307 に答える