2009-11-19 51 views
1

所以,問題是 我有以下行wehre 是一個字符串Expression.Constant(value,type)類型未知。如何定義類型

 
var filterValue = Expression.Constant(value, property.Type); 

如果property.Type是一個字符串,一切都很好,但是真的類型可以是任何東西,像一個十進制?

我不知道如何使這項工作對所有不同類型的 我使用,我可以做到這一點這個功能

 
private static T Parse (string value) 
{ 
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value); 
} 

 
var newValue = Parse(value); 
var filterValue = Expression.Constant(newValue, property.Type); 

但是我必須知道我試過

 
var newValue = Parse(value); 

但是這樣做nt work

任何想法?

回答

3

你不需要知道類型的所有:

object value = TypeDescriptor.GetConverter(property.Type).ConvertFromString(value); 
var filterValue = Expression.Constant(value, property.Type); 

仿製藥的做法是不是在這種情況下,適當的(或需要)。

您可能需要特殊處理null,雖然 - 或者乾脆不答應(property.Type)可能是int?等等

+0

TypeDescriptor是一個非常有用的東西,感謝這個信息! :) – Alexander 2015-09-04 14:34:57