我发现我可以使用GetMembers()
来返回类的成员,但我想只返回枚举成员。在进行调试时,我可以将鼠标悬停在member
上,然后查看IsEnum
true
属性,但我似乎无法通过代码访问它。
我希望只在以下代码中打印IAmAnEnum
。目前,代码将同时打印IAmAnEnum
以及IAmAClass
。
static void Main(string[] args)
{
foreach (var member in typeof(Test).GetMembers())
{
//if (member.IsEnum) // <-- Compile error
//{
Console.WriteLine(member.Name);
//}
}
Console.Read();
}
public class Test
{
public enum IAmAnEnum
{
}
public class IAmAClass
{
}
}
答案 0 :(得分:2)
package crypto;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class MyCrypto
{
SecretKeySpec key;
Cipher cipher;
byte[] iv = {0,0,0,0,0,0,0,0};
IvParameterSpec ivspec = new IvParameterSpec(iv);
MyCrypto() throws NoSuchAlgorithmException, NoSuchPaddingException, UnsupportedEncodingException
{
key =new SecretKeySpec("22042016".getBytes(), "DES");
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
}
public void encrypt(File file) throws InvalidKeyException, IOException
{
cipher.init(Cipher.ENCRYPT_MODE, key);
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(file);
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
byte[] block = new byte[8];
int i;
while ((i = fis.read(block)) != -1) {
cos.write(block, 0, i);
}
cos.close();
fis.close();
}
public void decrypt(File file) throws IOException, InvalidKeyException, InvalidAlgorithmParameterException
{
cipher.init(Cipher.DECRYPT_MODE, key, ivspec);
FileInputStream fis = new FileInputStream(file);
CipherInputStream cis = new CipherInputStream(fis, cipher);
FileOutputStream fos = new FileOutputStream(file);
byte[] block = new byte[8];
int i;
while ((i = cis.read(block)) != -1) {
fos.write(block, 0, i);
}
cis.close();
fos.close();
}
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IOException, InvalidAlgorithmParameterException
{
MyCrypto crypto = new MyCrypto();
File cryptoFile = new File(".../crypto.txt");
crypto.encrypt(cryptoFile);
crypto.decrypt(cryptoFile);
}
}
是IsEnum
的属性。
如果该成员实际上是一个类型,您可以将其强制转换为Type
并获取该属性。
答案 1 :(得分:0)
Type上的GetMembers方法返回一个MemberInfo对象数组。 在每个上面,您都有一个 MemberType 属性。 使用此选项可获取成员的类型。 在成员的类型上,您可以自由使用IsEnum检查。
快乐的编码! :)