0
A
回答
1
您需要創建一個具有所需屬性的類(例如MyRecord
),然後創建一個通用的List<MyRecord>
實例來保存類實例。
0
泛型不適合你,因爲它們只是編譯器的魔力。您可以查看您需要的DynamicObject或ExpandoObject。
或者,您也可以構建一個動態對象。看看System.CodeDom命名空間。這裏有一個例子
public class DynamicCodeCompiler
{
public static Type CompileCode(string code, string typeName)
{
var compiler = CodeDomProvider.CreateProvider("c#");
var compilerResults = compiler.CompileAssemblyFromSource(new CompilerParameters(), code);
if (compilerResults.Errors.HasErrors) return null;
return compilerResults.CompiledAssembly.GetType(typeName);
}
public static Type CreateClass(string nameSpaceName, string className, IDictionary<string, Type> properties)
{
var imports = new CodeNamespaceImportCollection();
foreach (var value in properties.Values)
{
imports.Add(new CodeNamespaceImport(value.Namespace));
}
imports.Add(new CodeNamespaceImport("System"));
var @class = new CodeTypeDeclaration(className)
{
IsClass = true
};
foreach (var propertyDefinition in properties)
{
var backingField = CreateBackingField(propertyDefinition.Key, propertyDefinition.Value);
@class.Members.Add(backingField);
var property = new CodeMemberProperty();
property.Attributes = MemberAttributes.Public;
property.Name = propertyDefinition.Key;
property.Type = new CodeTypeReference(propertyDefinition.Value);
property.GetStatements.Add(new CodeMethodReturnStatement(new CodeSnippetExpression(backingField.Name)));
property.SetStatements.Add(new CodeAssignStatement(new CodeSnippetExpression(backingField.Name),
new CodePropertySetValueReferenceExpression()));
@class.Members.Add(property);
}
var nameSpace = new CodeNamespace(nameSpaceName);
nameSpace.Types.Add(@class);
var assembly = new CodeCompileUnit();
//Add the namespace to the assembly.
assembly.Namespaces.Add(nameSpace);
var compilerParameters = new CompilerParameters(new[] { "mscorlib.dll", "System.dll" })
{GenerateInMemory = true};
//compilerParameters.ReferencedAssemblies.Add("System.dll");
var compiler = CodeDomProvider.CreateProvider("c#");
var compilerResults = compiler.CompileAssemblyFromDom(compilerParameters, assembly);
if (compilerResults.Errors.HasErrors)
{
foreach (var error in compilerResults.Errors)
{
Console.WriteLine(error);
}
return null;
}
var codeText = new StringWriter();
compiler.GenerateCodeFromNamespace(nameSpace, new IndentedTextWriter(codeText), new CodeGeneratorOptions());
return compilerResults.CompiledAssembly.GetType(string.Format("{0}.{1}", nameSpaceName, className));
}
private static CodeMemberField CreateBackingField(string name, Type type)
{
return new CodeMemberField
{
Attributes = MemberAttributes.Private,
Name = string.Format("_{0}", name),
Type = new CodeTypeReference(type)
};
}
}
0
如果你知道數組中的數據的位置,那麼你可以簡單地這樣做:
- 與所有你想要
- myObject.name屬性創建一個類= array [0]; myObject.age = array [1];
相關問題
- 1. 自定義對象
- 2. 將數據集映射到ASP.NET中的自定義.NET對象
- 3. 在.NET中使用COM對象的自定義字體
- 4. 將流數據轉換爲C#中的自定義對象.net
- 5. 解析.Net中的自定義JSON對象?
- 6. 對齊自定義LinearLayout中的對象?
- 7. 如何使用自定義對象創建自定義對象?
- 8. AS3自定義對象到ByteArray然後到自定義對象
- 9. 自定義對象的QList
- 10. 自定義對象的Arraylist
- 11. XmlSerializer的自定義對象
- 12. ArrayList的自定義對象
- 13. jQuery的,自定義對象
- 14. 將自定義對象投射到Javascript中的另一個自定義對象
- 15. 自定義驗證對象中的自定義組件
- 16. 自定義列表中的自定義對象WPF
- 17. 從對象到自定義類對象
- 18. 如何在VB.NET中創建自定義對象/自定義對象列表?
- 19. Swift中的自定義對象類
- 20. WCF中的自定義對象
- 21. NSSet中重複的自定義對象
- 22. Linq中的自定義Icomparer到對象
- 23. CRUDified對象中的自定義顯示
- 24. 識別arraylist中的自定義對象
- 25. javascript中的自定義多維對象
- 26. 自定義對象中的Hazelcast查詢
- 27. 自定義對象由MapRoutes定義
- 28. 查找自定義對象
- 29. YAML自定義對象
- 30. 自定義GUI對象
數組是否僅包含您想要創建的一個對象的信息? – Seva 2010-11-24 15:54:54