1. ホーム
  2. c#

[解決済み】汎用型変換FROM文字列

2022-04-19 17:04:53

質問

あるクラスを使って、別のクラスのプロパティ(quot;property")を格納したいのですが、どうすればよいですか?これらのプロパティは、単に名前と値を持っています。理想的なのは、このクラスに 型付き プロパティで、返される "value" が常に私が望む型であるようにします。

型は常にプリミティブでなければならない。このクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化したものです。このサブクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化するもので、このサブクラスによってベースクラスにいくつかの型安全性が追加されます(また、いくつかの変換を省くこともできます)。

ということで、(おおよそ)こんな感じのクラスを作りました。

public class TypedProperty<DataType> : Property
{
    public DataType TypedValue
    {
        get { // Having problems here! }
        set { base.Value = value.ToString();}
    }
}

そこで質問です。

文字列からプリミティブに変換する一般的な方法はありますか?

変換を横断的にリンクさせるような汎用的なインターフェイスは見当たらないようです(例えば ITryParsable は理想的でした!)。

どのように解決するのですか?

あなたの意図を正しく理解できたかどうかわかりませんが、これが役に立つかどうか見てみましょう。

public class TypedProperty<T> : Property where T : IConvertible
{
    public T TypedValue
    {
        get { return (T)Convert.ChangeType(base.Value, typeof(T)); }
        set { base.Value = value.ToString();}
    }
}