如何在从 ObservableCollection<T> 派生的运行时创建 Class 的实例?
How to Create an Instance of a Class in runtime derived from ObservableCollection<T>?
如何在从 ObservableCollection
派生的运行时创建 Class 的实例
视图模型和模型如下:- C# 编码
public class Mobile
{
ObservableCollection<MobileModelInfo> SourceCollection = new ObservableCollection<MobileModelInfo>();
private void CreateObject(ObservableCollection<MobileModelInfo> Source)
{
/// Create an Object for MobileModelInfo Class in Runtime and add the Values
}
private ObservableCollection<MobileModelInfo> CostructMobileModel()
{
SourceCollection.Add(new MobileModelInfo { Name = "iPhone 4", Catagory = "Smart Phone", Year = "2011" });
SourceCollection.Add(new MobileModelInfo { Name = "S6", Catagory = "Ultra Smart Phone", Year = "2015" });
CreateObject(SourceCollection);
return SourceCollection;
}
}
public class MobileModelInfo
{
public string Name { get; set; }
public string Catagory { get; set; }
public string Year { get; set; }
}
根据您给出的示例,您不需要 ObservableCollection
类型的支持变量;只需继承它,您的 Mobile
class 就会成为 MobileModelInfo
的可观察集合。注意:使用以下设计模式绑定到它要容易得多。
public class Mobile : ObservableCollection<MobileModelInfo>
{
public Mobile()
{
Add(new MobileModelInfo { Name = "foo", Category = "boo", Year = 1988 } );
}
public Mobile GetList()
{
return this;
}
}
我找到了这个问题的解决方案。以下是 C# 函数,它在从 ObservableCollection
派生的运行时创建一个 Class 的实例
private void CreateObject(ObservableCollection<MobileModelInfo> Source)
{
var gType = Source.GetType();
string collectionFullName = gType.FullName;
Type[] genericTypes = gType.GetGenericArguments();
string className = genericTypes[0].Name;
string classFullName = genericTypes[0].FullName;
// Get the type contained in the name string
Type type = Type.GetType(classFullName, true);
// create an instance of that type
object instance = Activator.CreateInstance(type);
// List of Propery for the above created instance of a dynamic class
List<PropertyInfo> oProperty = instance.GetType().GetProperties().ToList();
}
如何在从 ObservableCollection
派生的运行时创建 Class 的实例视图模型和模型如下:- C# 编码
public class Mobile
{
ObservableCollection<MobileModelInfo> SourceCollection = new ObservableCollection<MobileModelInfo>();
private void CreateObject(ObservableCollection<MobileModelInfo> Source)
{
/// Create an Object for MobileModelInfo Class in Runtime and add the Values
}
private ObservableCollection<MobileModelInfo> CostructMobileModel()
{
SourceCollection.Add(new MobileModelInfo { Name = "iPhone 4", Catagory = "Smart Phone", Year = "2011" });
SourceCollection.Add(new MobileModelInfo { Name = "S6", Catagory = "Ultra Smart Phone", Year = "2015" });
CreateObject(SourceCollection);
return SourceCollection;
}
}
public class MobileModelInfo
{
public string Name { get; set; }
public string Catagory { get; set; }
public string Year { get; set; }
}
根据您给出的示例,您不需要 ObservableCollection
类型的支持变量;只需继承它,您的 Mobile
class 就会成为 MobileModelInfo
的可观察集合。注意:使用以下设计模式绑定到它要容易得多。
public class Mobile : ObservableCollection<MobileModelInfo>
{
public Mobile()
{
Add(new MobileModelInfo { Name = "foo", Category = "boo", Year = 1988 } );
}
public Mobile GetList()
{
return this;
}
}
我找到了这个问题的解决方案。以下是 C# 函数,它在从 ObservableCollection
派生的运行时创建一个 Class 的实例private void CreateObject(ObservableCollection<MobileModelInfo> Source)
{
var gType = Source.GetType();
string collectionFullName = gType.FullName;
Type[] genericTypes = gType.GetGenericArguments();
string className = genericTypes[0].Name;
string classFullName = genericTypes[0].FullName;
// Get the type contained in the name string
Type type = Type.GetType(classFullName, true);
// create an instance of that type
object instance = Activator.CreateInstance(type);
// List of Propery for the above created instance of a dynamic class
List<PropertyInfo> oProperty = instance.GetType().GetProperties().ToList();
}