1

クラスを取得し、リフレクションを使用して値を設定し、クラス型を返すジェネリック メソッドを構築しようとしています。

protected static T GetSecureModel<T>(T model)
        {
            T secureModel = default(T);

            foreach (var property in model.GetType().GetProperties())
            {

                    if (string.CompareOrdinal(property.PropertyType.FullName, "System.String") == 0)
                    {
                        property.SetValue(property.Name, property.GetValue(model, null).ToString(), null);
                    }
             }

              return secureModel;
}

設定値の後にクラスを返す方法は?

4

1 に答える 1

2

わかった。私はそれを解決します。以下のコードを確認してください。誰かの役に立つかもしれません。

   protected static T GetSecureModel<T>(T model)
        {
            bool secureData = false;

            T secureModel = default(T);

            foreach (var property in model.GetType().GetProperties())
            {
                if (property.GetValue(model, null) != null && property.GetValue(model, null).ToString() != _blankGuid && property.GetValue(model, null).ToString() != _zero)
                {
                    if (string.CompareOrdinal(property.PropertyType.FullName, _uniqueIdentifier) == 0)
                    {
                        model.GetType().GetProperty(property.Name).SetValue(model, new Guid(Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString())), null);
                    }
                    else if (string.CompareOrdinal(property.PropertyType.FullName, _numeric) == 0)
                    {
                        model.GetType().GetProperty(property.Name).SetValue(model, int.Parse(Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString())), null);
                    }
                    else if (string.CompareOrdinal(property.PropertyType.FullName, _string) == 0)
                    {
                        model.GetType().GetProperty(property.Name).SetValue(model, Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString()), null);
                    }

                    secureData = true;
                }

            }

            if (secureData)
            {
                secureModel = model;
            }

            return secureModel;
        }
于 2013-02-12T14:40:13.257 に答える