考虑以下2种扩展方法C#调度扩展方法不能引用
public static string getIDPropertyName(this object value)
{
return "ID";
}
public static string getIDPropertyName<IDType>(this EntityRestIdentityDescriber<IDType> entityIdentityDescriber)
{
return entityIdentityDescriber.propertyNameDescribingID();
}
和下面2调用
//arrange
object test = new CustomEntityRestModelIdentity();
//test.UserName = "KKK";
//act
var actual = test.getIDPropertyName(); //calls the first extension method
var actual2 = (test as CustomEntityRestModelIdentity).getIDPropertyName(); //calls the second extension method
我如何可以执行第二扩充方法,即使它的引用类型是对象,但它的值类型是一个EntityRestIdentityDescriber?我正在寻找静态多态。
你的意思是你怎么称呼它,而不铸造? –
扩展方法是在编译时选择的。您已经在问题(actual2)中有一个解决方法。 – buffjape
@AliSheikhNezami这不是测试哈哈。我想要做的是通过反射登陆一个对象,然后调用getIDPropertyName为了获得正确的方法来执行以防对象实现EntityRestIdentityDescriber。如果对象没有实现它,它默认为返回ID的另一个方法。有没有办法调用其他方法没有铸造或继承? –