私はクラスを持っています:
class Person
{
public string Name { get { return "Antonio"; } }
}
そしてコード:
IEnumerable<object> uncknownObject;
uncknownObject = new ObservableCollection<Person>( );
var observCol = uncknownObject.GetType( );
var x = ( ( dynamic )observCol ).GenericTypeArguments[ 0 ];
var y = observCol.GetProperty( "GenericTypeArguments" );
var instance = ( Person )Activator.CreateInstance( x );
Console.WriteLine( instance.Name ); // Print Antonio!!!
なぜy == null
ですか?
写真に注意してください:
デバッガーは、プロパティGenericTypeArgumentsが存在する必要があることを示し、コードは反対を示します。デバッガーが正しく、そのプロパティが存在することを証明できます。なぜなら、x が null ではないからです。そのプロパティが存在する場合、なぜy
nullに等しいのですか!!!???
編集
アニのおかげで、私は今持っています:
IEnumerable<object> uncknownObject;
uncknownObject = new ObservableCollection<Person>();
var observCol = uncknownObject.GetType();
var genTypeArgsProperty = typeof(Type).GetProperty("UnderlyingSystemType");
var genTypeArgsValue = (genTypeArgsProperty.GetValue(observCol, null));
var f = genTypeArgsValue.GetType().GetMethod("GetGenericArguments");
IEnumerable<object> result = (IEnumerable<object>)f.Invoke(genTypeArgsValue, null);
var x = result.FirstOrDefault();
var instance = Activator.CreateInstance( (Type)x );