我想从我的应用程序的默认内部存储文件夹中读取文件名,但即使有一些文件,我也会得到一个大小为 0 的列表,我使用以下内容来读取文件名
File dirFiles = Settings.this.getFilesDir();
File list[] = dirFiles.listFiles();
for( int i=0; i< list.length; i++)
{
myList.add( list[i].getName() );
}
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我得到的路径正确吗?或者它需要在它的末尾有一个“/”?
/data/data/com.compfrind.contacts/files
Run Code Online (Sandbox Code Playgroud) 有没有办法通过反射执行"内部"代码?
这是一个示例程序:
using System;
using System.Reflection;
namespace ReflectionInternalTest
{
class Program
{
static void Main(string[] args)
{
Assembly asm = Assembly.GetExecutingAssembly();
// Call normally
new TestClass();
// Call with Reflection
asm.CreateInstance("ReflectionInternalTest.TestClass",
false,
BindingFlags.Default | BindingFlags.CreateInstance,
null,
null,
null,
null);
// Pause
Console.ReadLine();
}
}
class TestClass
{
internal TestClass()
{
Console.WriteLine("Test class instantiated");
}
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个测试类通常是完美的,但是当我尝试通过反射创建一个实例时,我得到一个missingMethodException错误,说它无法找到构造函数(如果你尝试从程序集外部调用它会发生什么).
这是不可能的,还是我可以做一些解决方法?
我经常看到人们说"如果你需要朋友/内部然后你的设计是错误的",有人可以告诉我如何重新设计以下代码以消除ChessPiece.Location中的内部?
它目前被使用,因此向ChessBoard添加一个片段设置ChessPiece.Location属性以匹配,显然使它公开将比内部更糟糕并使其私有将阻止ChessBoard更新位置.感谢您的任何见解.
public struct Coord
{
public Coord(int x, int y) { this.X = x; this.Y = y; }
public int X { get; private set; }
public int Y { get; private set; }
}
public class ChessBoard
{
public ChessBoard() { /*[...]*/ }
public ChessPiece this[int x, int y]
{
get
{
// Return ChessPiece at this position (or null)
}
set
{
// Add ChessPiece at this position and set its Location property
}
}
public class …Run Code Online (Sandbox Code Playgroud) 我有一个接口(称为IMessage),它有一个方法Check(),一个类实现这个接口
interface IMessage
{
bool Check();
}
class NewClass : IMessage
{
#region IMessage Members
public bool Check()
{
//Some logic
}
}
Run Code Online (Sandbox Code Playgroud)
那一切都很好.问题是我不希望这个方法(Check())是公共的,我想把它保持在asssembly的内部,但如果我把它作为内部,那么编译器说它没有实现接口.它需要公开才能实现接口.我能做什么?
我在大约12岁的开发团队工作,我们构建了一套合理的API,我们仅在内部严格使用.通常,所有类和接口都是公共的,因为这就是它们的完成方式.我经常考虑将一些构造函数设置为内部的价值,以便API的消费者(尽管是内部的)必须使用工厂或我现在想不到的其他一些原因.
这是你和你的团队练习的东西吗?
这对您的单元测试有何影响?你是否发现通过它的工厂对一个类进行单元测试是可以的,还是通过像PrivateObject这样的东西来访问构造函数?
什么是快速测试来确定一个实例是否MemberInfo是内部的?
我想简单地建立商店信息的结构.我的问题是创建清除存储值的内部方法.
public struct GraphValues
{
public int min, max, ...;
public GraphValues(int min, int max, ...)
{
this.min = min;
this.max = max;
...
}
public static void Clear(this GraphValues values)
{
values.min.Equals(null);
values.max.Equals(null);
...
}
}
Run Code Online (Sandbox Code Playgroud)
所以在这个结构中写新值就行了,
GraphValues val = new GraphValues()
val.max = 12;
val.min = 1;
Run Code Online (Sandbox Code Playgroud)
但我想将所有结构值都设置为null.打电话给像
val.Clear();
Run Code Online (Sandbox Code Playgroud)
任何的想法?Thnaks
我有一个带有2个构造函数的公共类:默认(没有参数),它是内部的,而另一个是公共的.默认构造函数使用一些默认值调用另一个构造函数.
我使用反射调用内部构造函数,因此它不会在程序集中的任何位置静态使用(仅通过反射).
当我进行反射调用时,我得到:
System.MissingMethodException
Message=No parameterless constructor defined for this object.
Run Code Online (Sandbox Code Playgroud)
我知道两个解决方法:
这个问题有什么更好的解决方案
值得一提的是,如果默认构造函数是public,我不会得到该异常.
谢谢,
波阿斯.
首先,我的编程语言是Java.我使用套接字创建了一个简单的聊天程序.它的效果非常好.
我在两台终端实例之间的计算机(localhost)上试了一下.
我想在我的笔记本电脑或另一台电脑上试一试.为此,我需要客户端的内部IP地址.
如何使用Java找出客户端的内部IP地址?
我特别想用Java来解决它,而不是使用CMD,或类似的东西.我的意思是 - 这不仅仅是一个常量字符串.
我有一个JSON类对象是一个内部类.我希望保持这种方式,以防止其他代码尝试创建该类型的对象,因为我只希望JSON反序列化代码这样做.我可以使用类类型作为变量,但如果我尝试返回该类型的对象,我会得到一个不一致的accessibiliy编译器错误,因为该方法是公共的,类是内部的.
解决这种情况的最佳方法是什么?我想我可以为内部类创建一个接口并传递它,但这意味着我必须为我正在使用的每个JSON类创建额外的行李,并且我使用了很多它们.
编辑:我做了Jon Skeet建议的改变,问题就消失了.我遇到了这个问题,因为默认情况下公开我的类是公开的.我正在指出那些正在做同样事情的人.
// The internal class.
internal class JsonPetShelters
{
[JsonProperty("@encoding")]
public string Encoding { get; set; }
[JsonProperty("@version")]
public string Version { get; set; }
[JsonProperty("petfinder")]
public Petfinder Petfinder { get; set; }
}
// This method gets the inconsistent accessibility error since
// JsonPetShelters is an internal class.
public JsonPetShelters GetShelters()
{
// For example purposes only
return null;
}
Run Code Online (Sandbox Code Playgroud)