所以,我确信之前已在某处回答过,但我无法在任何地方找到它.希望一些仿制药大师可以提供帮助.
public interface IAnimal{}
public class Orangutan:IAnimal{}
public void ValidateUsing<T>(Action<T> action) where T : IAnimal
{
Orangutan orangutan = new Orangutan();
action(orangutan); //Compile error 1
//This doesn't work either:
IAnimal animal = new Orangutan();
action(animal); //Compile error 2
}
Run Code Online (Sandbox Code Playgroud)
编辑:基于Yuriy和其他人的建议,我可以做一些演员,如:
public void ValidateUsing<T>(Action<T> action) where T : IAnimal
{
Orangutan orangutan = new Orangutan();
action((T)(IAnimal)orangutan);
//This doesn't work either:
IAnimal animal = new Orangutan();
action((T)animal);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是调用ValidateUsing方法,如下所示:
ValidateUsing(Foo);
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果foo看起来像这样:
private void Foo(Orangutan obj)
{
//Do something
} …Run Code Online (Sandbox Code Playgroud) 我对Kerberos身份验证的工作方式了如指掌,但对于我的生活,我无法解释我在IIS托管的WCF服务中看到的奇怪行为.
我已经设置了一个非常简单的WCF应用程序,它使用BasicHttpBinding和TransportCredentialOnly公开端点.我的理解是,要使Kerberos工作,客户端必须指定用户主体名称或服务主体名称.由于某种原因,它在不同的绑定类型中似乎不一致.
当我省略这个主要名称时,在IIS6上,NTLM最终被使用.在IIS7上,它使用Kerberos.当我在IIS6上指定用户主体名称时,使用Kerberos但在IIS7上调用失败(Wireshark在Kerberos握手期间显示KRB_AP_ERR_BADMATCH错误).
当我使用Message安全性将绑定切换到WSHttpBinding时,它变得更加有趣.在该实验中,如果我没有在IIS6上指定用户主体名称,则调用失败,并且在IIS7上使用NTLM.当我指定UPN时,IIS6失败,II7最终使用Kerberos.以下是我的发现摘要.如果那里的任何人可以帮助我解决正在发生的事情,我会永远感激.
