Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当参数是模板时,如何调用作为方法参数传递的对象的属性_C#_Templates_Methods - Fatal编程技术网

C# 当参数是模板时,如何调用作为方法参数传递的对象的属性

C# 当参数是模板时,如何调用作为方法参数传递的对象的属性,c#,templates,methods,C#,Templates,Methods,下面是我希望通过模板方法访问其对象属性的类 以下是参数为模板的方法 如果我传入一个构造对象,那么如何从方法delete内部访问Id属性您可以使用一个接口 public interface IId { int Id { get; set; } } public class Construction : IId { public int Id { get; set; } } public void Delete(IId obj) { var x = obj.Id; } 您可

下面是我希望通过模板方法访问其对象属性的类

以下是参数为模板的方法


如果我传入一个构造对象,那么如何从方法delete内部访问Id属性

您可以使用一个接口

public interface IId
{
    int Id { get; set; }
}
public class Construction : IId
{
    public int Id { get; set; }
}
public void Delete(IId obj)
{
    var x = obj.Id;
}
您可以使用约束,请参见

可以使用系统反射

public void Delete<T>(T obj){}
public interface IId
{
    int Id { get; set; }
}
public class Construction : IId
{
    public int Id { get; set; }
}
public void Delete(IId obj)
{
    var x = obj.Id;
}
public void Delete2<T>(T obj) where T : Construction
{
   var x = obj.Id;
} 
public void Delete<T>(T obj)
{
    if (obj.GetType().Name == "Construction")
    {
        FieldInfo info = obj.GetType().GetField("Id");
        int id = (int)info.GetValue(obj);
    }
}