0

How do I retrieve the name of the type T that was used to initialize RuleViewModelBase? Right now I'm getting "RuntimeType"

public abstract class RuleViewModelBase<T> : IRuleViewModel where T : RuleEntity, new() { public bool Editable { set { _editable = value; if (Condition != null) { Condition.Editable = value; } if (Content != null) { Content.Editable = value; } } get { return _editable; } } private bool _editable; private string _groupsJson; private List<RuleGroupJM> _groups; public string RuleType { get { return typeof(T).GetType().Name; } } public RuleContentVm Content { set; get; } public RuleConditionVm Condition { set; get; } public virtual void SaveToEntity(T rule) { } public RuleEntity ConvertToEntity() { T rule = new T(); rule = (T)this.Content.SaveToEntity(rule); rule = (T)this.Condition.SaveToEntity(rule); SaveToEntity(rule); return rule; } } 
1
  • typeof(T) yields the type of T. Calling GetType on that gives the type of the value returned by typeof. This is obviously not what you want. Commented Jun 22, 2011 at 18:33

1 Answer 1

6

I think you want:

typeof(T).Name 

Instead of:

typeof(T).GetType().Name 

The code you had was getting the name of the type that corresponds to the instance of Type that refers to your class. i.e. effectively you were doing typeof(Type) (or more specifically, typeof(RuntimeType)) and getting the name of that.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.