再见,
我对这个问题很沮丧,我创建了一个简单的类,如下所示:
public class Classe
{
public int Intero { get; set; }
public Int32 Intero32 { get; set; }
public double Double { get; set; }
public string Stringa { get; set; }
public Classe PerReferenza { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我编写了这个扩展方法,其目标是返回属性的引用默认值(引用的类型或值类型):
public static class TypeExtensions
{
public static object GetDefaultValue(this Type t)
{
if (t.IsValueType)
return Activator.CreateInstance(t);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
按照我的主要方法:
static void Main(string[] args)
{
Classe c = new Classe();
foreach (var proprietà in c.GetType().GetProperties())
{
var predefinito = proprietà.GetType().GetDefaultValue();
Console.WriteLine($"Default for {proprietà}: {predefinito ?? "NULL"}");
}
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
Default for Int32 Intero: NULL
Default for Int32 Intero32: NULL
Default for Double Double: NULL
Default for System.String Stringa: NULL
Default for ConsoleApp1.Classe PerReferenza: NULL
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么我总是为所有属性获得FALSE ...预期的输出是:
Default for Int32 Intero: 0
Default for Int32 Intero32: 0
Default for Double Double: 0
Default for System.String Stringa: ""
Default for ConsoleApp1.Classe PerReferenza: null
Run Code Online (Sandbox Code Playgroud)
非常感谢...
Mar*_*ell 11
你的意思是proprietà.PropertyType.GetDefaultValue(); 你当前正在询问是否RuntimePropertyInfo是一个值类型(它不是).
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |