1
我問類似的問題here而here獲取屬性名稱和類型傳遞直接
這是一個樣本類型:
public class Product {
public string Name { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public bool IsAllowed { get; set; }
}
而且我有需要的屬性生成一些HTML代碼的通用類:
public class Generator<T> {
public T MainType { get; set; }
public List<string> SelectedProperties { get; set; }
public string Generate() {
Dictionary<string, PropertyInfo> props;
props = typeof(T)
.GetProperties()
.ToDictionary<PropertyInfo, string>(prop => prop.Name);
Type propType = null;
string propName = "";
foreach(string item in SelectedProperties) {
if(props.Keys.Contains(item)) {
propType = props[item].PropertyType;
propName = item;
// Generate Html by propName & propType
}
}
而且我用這個類型如下:
Product pr = new Product();
Generator<Product> GT = new Generator<Product>();
GT.MainType = pr;
GT.SelectedProperties = new List<string> { "Title", "IsAllowed" };
GT.Generate();
所以我認爲這個過程應該更容易,不過我不知道如何實現它,我想通過性能發電機更簡單,有點像以下僞代碼:
GT.SelectedProperties.Add(pr.Title);
GT.SelectedProperties.Add(pr.IsAllowed);
我不知道這是否可能,我只需要兩件事1-PropertyName like:IsAllowed
2-屬性類型如:bool
。也許不需要通過MainType
我使用它來獲取屬性類型,所以如果我可以像上面那樣處理,就不需要它了。
你有什麼建議來實現這樣的事情?
有沒有更好的方法來做到這一點?
更新
正如ArsenMkrt
說我發現可以用MemberExpression
,但我不能讓物業類型,我看到在調試物業類型看圖片:
那麼如何我可以獲得房產類型嗎?我發現它here。
感謝您的回答,這真的很有幫助,但我無法獲得'PropertyType',我在調試中看到屬性類型,但我不知道g等等,因爲我更新問題,你知道如何得到它嗎? – Saeid 2012-04-19 07:34:08
@Saeid,我相信((PropertyInfo)body.Member).PropertyType將返回你正在尋找的類型 – 2012-04-19 09:03:15