这个问题涉及在通用方法中铸造枚举
鉴于枚举
public enum Crustaceans
{
Frog = 1,
Toad = 4
}
Run Code Online (Sandbox Code Playgroud)
我可以简单地创建我的枚举实例
short val = 4;
Crustaceans crusty = (Crustaceans) val;
Run Code Online (Sandbox Code Playgroud)
但是,如果
short val = 4;
object obj = (object) val;
Crustaceans crusty = (Crustaceans)obj;
Run Code Online (Sandbox Code Playgroud)
尝试执行crusty的初始化时抛出运行时异常.
任何人都可以解释为什么会这样,以及为什么做这样的事情是不合法的.
并不是说我真的想要做到这一点,但是当我试图通过泛型来实现类似的事情并且有效地发生了正在发生的事情时,我遇到了一个问题.即
public T dosomething<T>(short val) where T : new()
{
T result = (T)(object) val;
return result;
}
Run Code Online (Sandbox Code Playgroud)
那么,我试图做的是有与枚举和非枚举(不是那么关键,但将是很好),可以设置为短值,而不抛出异常,实际上初始化正确的枚举值工作的通用功能.
我可以用什么选项来确定哪个classpath maven正在运行一个testng测试用例?
login-config.xml中定义了以下身份验证策略
<policy>
<!--- - - - -->
<application-policy name="myAuthenticationPolicy">
<authentication>
<login-module code="com.ge.trans.mp.samp.jaas.LoggingLdapExtLoginModule" flag="required">
<module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option>
Run Code Online (Sandbox Code Playgroud)
开关站配置如下:
<switchyard xmlns="urn:switchyard-config:switchyard:1.0"
xmlns:sy="urn:switchyard-config:switchyard:1.0"
xmlns:bean="urn:switchyard-component-bean:config:1.0"
xmlns:camel="urn:switchyard-component-camel:config:1.0"
xmlns:http="urn:switchyard-component-http:config:1.0"
xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912">
<sca:composite name="http-bridge-esb" targetNamespace="urn:switchyard-quickstart:http-binding:1.0">
<sca:service name="httpPostService" promote="HttpPostBuilder/HttpPost" **sy:security="basic-auth"**>
<http:binding.http>
<operationSelector operationName="postMessage"/>
<http:contextPath>myContextPath</http:contextPath>
</http:binding.http>
</sca:service>
<sca:component name="HttpPostBuilder">
<camel:implementation.camel>
<camel:xml path="META-INF/route.xml"/>
</camel:implementation.camel>
<sca:service name="HttpPost">
<sca:interface.java interface="my.post.Class"/>
</sca:service>
</sca:component>
</sca:composite>
<domain>
<securities>
<**security name="basic-auth"** securityDomain="myAuthenticationPolicy" rolesAllowed="mesgPoster"/>
</securities>
</domain>
</switchyard>
Run Code Online (Sandbox Code Playgroud)
此配置在JBoss 6.1 EAP中启动,似乎正确接收消息,但似乎无法进行身份验证.
我假设默认用户名密码回调处理程序用于处理基本身份验证,并且还假设安全元素中的安全域引用与login-config.xml中配置的应用程序策略名称相关.
我似乎找不到使用LDAP配置策略显示基本身份验证的示例配置.
如果有人可以指出我所缺少的点,或者某个地方存在switchyard基本身份验证配置的示例,那将非常感激.
class Base {}
class ClassA : Base {}
class ClassB : Base {}
public static class ExtensionFunctions
{
public static bool DoSomething(this Base lhs, Base rhs)
{
return lhs.DoSomethingElse(rhs);
}
public static bool DoSomethingElse(this Base lhs, Base rhs) { return true; }
public static bool DoSomethingElse(this ClassA lhs, ClassA rhs) { return false; }
public static bool DoSomethingElse(this ClassA lhs, ClassB rhs) { return false; }
public static bool DoSomethingElse(this ClassB lhs, ClassA rhs) { return false; }
public static …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在调用Assembly.GetTypes()时阻止ReflectionTypeLoadException
我想获得一个程序集中的所有类型.但是,我收到以下错误:
System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型.
问题是我得到类型的程序集引用了另一个程序集,该程序集仅在生产环境中可用,而不是在单元测试环境中.
那么,有没有什么方法可以过滤GetTypes或类似的东西,只返回程序集中实际定义的类型,而不是获取类型加载异常?
例如替换
.Assembly.GetTypes().Where(t => t.Namespace.Equals(...
Run Code Online (Sandbox Code Playgroud) 我想创建一个在Web界面中处于活动状态的常规查询,该查询选择当前所选项目的所有问题.
例如,如果我有两个项目
为PROJ1选择所有问题我会创建一个查询
Project = PROJ1
Run Code Online (Sandbox Code Playgroud)
但是,如果我有大量项目,我需要创建特定于该特定项目的查询.
我想做的是创建一个查询,如
Project = CurrentProject
Run Code Online (Sandbox Code Playgroud)
是否有允许我做这样的事情的查询语法?
class A {}
class B : A {}
class C : A {}
ICollection<A> myCollection;
var myresults = myCollection.Where(item => item.GetType() is C);
Run Code Online (Sandbox Code Playgroud)
鉴于上面的层次结构,谓词有效地做了什么.
如何构造where谓词以从集合中返回C类型的所有项?